Javascript 使用jQuery处理表单中的无效输入

Javascript 使用jQuery处理表单中的无效输入,javascript,jquery,html,Javascript,Jquery,Html,我有一个带有输入的表单,例如 <td class="units_depth_form"> <input id="id_form-0-rain" name="form-0-rain" step="0.01" type="number" /> </td> 我在表单标签的末尾添加了'novalidate'。问题是当输入无效时,$(this).val()为空。是否有其他方法获取用户输入的值 在任何人提出解决方案之前,删除type='number'部分可以解决问题

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

<td class="units_depth_form">
  <input id="id_form-0-rain" name="form-0-rain" step="0.01" type="number" />
</td>
我在表单标签的末尾添加了
'novalidate'
。问题是当输入无效时,
$(this).val()
为空。是否有其他方法获取用户输入的值

在任何人提出解决方案之前,删除
type='number'
部分可以解决问题,但我不希望这样做。这个表单是通过一个ModelForm在Django中创建的,它将涉及大量的黑客攻击,这些攻击首先会破坏使用Django的目的

这似乎是因为他们在
type=“number”
输入中发现无效数据

也许您最好的选择是使用
并自己实现向上和向下箭头。我发现周围有几种选择

如果由于Django的原因,表单输入必须使用
type=“number”
创建,则可以在页面加载后立即在客户端上更改:

$(document).ready(function() {
    $(".units_temp_form input").each(function(){
        if ($(this).attr('type') == "number") {
            $(this).attr('type', 'text');
        }
    });
});
这似乎是因为他们在
type=“number”
输入中发现无效数据

也许您最好的选择是使用
并自己实现向上和向下箭头。我发现周围有几种选择

如果由于Django的原因,表单输入必须使用
type=“number”
创建,则可以在页面加载后立即在客户端上更改:

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

也许您可以在文档准备好后取出所有
type='number'
,并在提交表单时将其放回原处。谢谢您的建议。它可以解决这个问题,但是表单还有一个“步骤”属性,它指示表单在输入框中显示向上和向下箭头,以增加或减少给定步骤的值。删除“type”属性也会删除这些箭头。如果能够保留它们就好了。也许您可以在文档准备好后取出所有
type='number'
,并在提交表单时将其放回原处。谢谢您的建议。它可以解决这个问题,但是表单还有一个“步骤”属性,它指示表单在输入框中显示向上和向下箭头,以增加或减少给定步骤的值。删除“type”属性也会删除这些箭头。如果能够保留它们就好了。也许您可以在文档准备好后取出所有
type='number'
,并在提交表单时将其放回原处。谢谢您的建议。它可以解决这个问题,但是表单还有一个“步骤”属性,它指示表单在输入框中显示向上和向下箭头,以增加或减少给定步骤的值。删除“type”属性也会删除这些箭头。能留住他们真是太好了。昨晚我从这件事上得出了同样的结论。谢谢你给我其他选项的链接。我昨晚也从中得出了同样的结论。谢谢你给我其他选项的链接。我昨晚也从中得出了同样的结论。感谢您提供其他选项的链接。