使用jQuery从表单处理无效输入

时间:2015-06-17 01:44:58

标签: javascript jquery html

我有一个带有输入的表单,例如

{"ToughGuys":[
    {"name":"Ivan", "position":"Executive"},
    {"name":"Little Johnny", "position":"Intern"},
    {"name":"Beige Cathy", "position":"Executive"},
    {"name":"Stan", "position":" original Intern"}
]}

我希望允许用户输入单位。例如,表单可以预期以英寸为单位的值,但我允许用户输入<td class="units_depth_form"> <input id="id_form-0-rain" name="form-0-rain" step="0.01" type="number" /> </td> ,当离开文本框时,它将包含'20 cm'

要做到这一点,我在页面的JavaScript部分有以下jQuery代码:

'7.87'

我在表单标记的末尾添加了$(".units_temp_form input").focusout(function() { // Convert and replace if valid double ending with 'cm' 。问题是当输入无效时'novalidate'为空。是否有其他方法可以获得用户输入的值?

在任何人建议解决方案之前,删除$(this).val()部分可以解决问题,但我不想这样做。这个表单是在Django中通过ModelForm创建的,它将涉及大量的黑客攻击,这将首先破坏使用Django的目的。

1 个答案:

答案 0 :(得分:0)

当他们在type="number"输入中找到无效数据时,似乎是the way browsers behave

也许您最好的选择是使用<input type="text"/>并自行实施向上和向下箭头。我有几个选项,我找到one that looks niceanother that keeps going on mouse down

如果由于Django而必须使用type="number"创建表单输入,您可以在页面加载后立即在客户端上更改它:

$(document).ready(function() {
    $(".units_temp_form input").each(function(){
        if ($(this).attr('type') == "number") {
            $(this).attr('type', 'text');
        }
    });
});