【问题标题】:How to select and run this function onload?如何选择和运行这个函数onload?
【发布时间】:2018-02-12 16:17:15
【问题描述】:

所以我的脚本中有这个工作代码块,用于将小数分隔符从逗号“,”替换为句点“。” ,编辑表格时。因为在这个区域,十进制分隔符逗号是正常的,所以我也希望像这样显示值 1,99€ 所以我恢复了工作功能。所选字段应在加载时更改。当表单被提交时,我会再次将其收回。在本例中,我只向您展示其中一个字段。

value="1.5" 从 Magento-Backend 以错误的方式加载,这是另一回事:

我包括onload:"function(event)"window.onload = function(); 展示了我从 jQuery 解决此功能的两个尝试:jQuery('form').on('change', '#price', function(event) 我还需要知道如何删除 .on('change' 部分。第一次使用 Js 和 jQuery。我真的尝试了一切。

 <html>
  <body onload="function(event)">
   <form>
    <input id="price" value="1.5">
   </form>
  </body>
 </html>

<script>

window.onload = function();

jQuery('form').on('change', '#price', function(event) {
   event.preventDefault();
   if (jQuery('#price').val().includes('.'))  {

    var varwithpoint = jQuery('#price').val();
    varwithcomma = varwithcomma.replace(",",".");

    jQuery('#price').val(varwithpoint);
} 
 else {
    console.log('no dot to replace');
}

});
</script>

【问题讨论】:

  • function是javascript的保留字,用来声明函数,所以不能把你的函数称为“函数”
  • @xavvvier 我不认为这就是这里发生的事情。似乎只是缺乏对函数的理解。
  • @Archer,不仅对函数缺乏了解,对jQuery也缺乏了解。我还看到该函数被附加了两次,在带有 onload 属性的 html 和 javasacript 代码的第一行
  • 没错,我就是这么说的。我对 jQuery 和 Javascript 缺乏基本的了解,并给了你两次失败的尝试来解决调用函数的问题。从来没有必要调用函数,你是对的。你的讨论帮助了我!谢谢!通过这两种语法的几个小时速成课程,我现在明白了,连同你的答案。不错。

标签: javascript jquery magento str-replace onload


【解决方案1】:

代码的某些部分似乎没有按预期工作,因此下面是将“,”转换为“。”的基本代码示例。如果存储在输入“价格”中,并在每次更改值后进行检查;

 
function convert_price(){
  var this_price = $("#price").val();
  if (this_price.includes(',')) {      
    this_price = this_price.replace(",",".");
    $('#price').val(this_price);
  } else {
    console.dir('no dot to replace');
  }
}
convert_price();

$("#price").on("change",convert_price);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<html>
  <body>
   <form>
    <input id="price" value="1,5">
   </form>
  </body>
 </html>

【讨论】:

    【解决方案2】:

    我已经将change 事件附加到输入文件的函数称为“init”,我还更改了传递给on 函数的参数

    function init(){
    
       var input = jQuery('#price');
       input.on('change', function(event) {
         event.preventDefault();
         var valueInInput = input.val();
         if (valueInInput.includes('.')) {
            var varwithcomma = valueInInput.replace(",",".");
            input.val(varwithcomma);
         } else {
            console.log('no dot to replace');
         }
       });
    }
    <html>
      <head>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
      </head>
      <body onload="init()">
       <form>
        <input id="price" value="1.5">
       </form>
      </body>
     </html>

    【讨论】:

    • 感谢您的宝贵时间。我在 jsFiddle 中尝试过,但没有成功。可能是因为该函数仅在开始时被调用一次,然后它甚至不会触发 on('change',因为该值已经在表单中。当我自己更改值时,该函数也没有替换。我可以也不要修复它。jsfiddle.net/#&togetherjs=OB5AUOsHyk
    最近更新 更多