使用parseFloat时出错“使用name ='field_name'的无效表单控件不可聚焦。”

时间:2017-02-28 08:58:53

标签: javascript jquery

您好我有两个html type = number

的文本框
<input data-sign="BHD " type="number" class="widthinput input__field input__field--yoshiko validation-passed" value="" name="special_price" id="special_price">
<input data-sign="BHD " value="" type="number" class="required-entry validate-zero-or-greater input__field input__field--yoshiko validation-passed" name="price" id="price">

这是我的用于检查的js代码

if(parseFloat(jQuery('#special_price').val()) >= parseFloat(jQuery('#price').val())){
    console.log(parseFloat(jQuery('#special_price').val()));
    console.log(parseFloat(jQuery('#price').val()));
    alert("You can't enter special price greater than price");
    jQuery("html, body").animate({ scrollTop: 0 }, "slow");
    e.preventDefault();
    return false;
}

当我输入像

这样的值时
  

价格:160,special_price:90

这个js条件工作正常,但是当我输入像

这样的值时
  价格250.750,特价55.350

这种情况失败并在控制台中给我错误

An invalid form control with name='price' is not focusable.
An invalid form control with name='special_price' is not focusable.

我在Chrome浏览器上。

2 个答案:

答案 0 :(得分:1)

您的代码正常运行,请检查您的jquery库。请参阅jsfiddle

或者向表单添加novalidate属性会有所帮助:

<form name="myform" novalidate>

<强>更新

数字类型的step值控制哪些数字有效(以及maxmin),默认为 1 < / strong>即可。步进按钮的实现也使用此值(即按下增加step)。

<input type="number" step="0.01">

只需将此值更改为适当的值即可。为了钱,可能需要两位小数:

(如果它只能是正数,我也设置min = 0)

如果您希望允许任意数量的小数位,可以使用step="any"(但对于货币,我建议坚持使用0.01)。在Chrome&amp; Firefox,使用any时,步进按钮将递增/递减1,并查看the relevant spec here

这是一个操场,展示各种步骤如何影响各种输入类型:

&#13;
&#13;
<form>
  <input type=number step=1 /> Step 1 (default)<br />
  <input type=number step=0.01 /> Step 0.01<br />
  <input type=number step=any /> Step any<br />
  <input type=range step=20 /> Step 20<br />
  <input type=datetime-local step=60 /> Step 60 (default)<br />
  <input type=datetime-local step=1 /> Step 1<br />
  <input type=datetime-local step=any /> Step any<br />
  <input type=datetime-local step=0.001 /> Step 0.001<br />
  <input type=datetime-local step=3600 /> Step 3600 (1 hour)<br />
  <input type=datetime-local step=86400 /> Step 86400 (1 day)<br />
  <input type=datetime-local step=70 /> Step 70 (1 min, 10 sec)<br />
</form>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

问题是 type =&#34; number&#34; 当我将其更改为 type =&#34; text&#34; 并且我正在验证号码时来自js现在工作正常。