.val为Chrome返回的值与Chrome不同

时间:2016-11-02 11:39:25

标签: javascript jquery html google-chrome internet-explorer

对于一个项目,我正在使用数据库。用户应该能够创建一个条目,但在创建/编辑条目之前,必须检查某些内容。

我想要检查表单的输入字段是否为空,或者包含9个字符。我用以下代码完成了这个:

$('#submit').on('click', function(event) {
    var formData = new FormData($('#ref')[0]);

    if ($("#ihcnummer").val() != '' && $("#ihcnummer").attr('value').length != 9) {
        $('#alert').html('<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> IFS projectnumber should either be left blank, or be equal to the 9 character standard!').slideDown(10);
        $("#ihcnummer").css('border', '1px solid red');
        return;
    }
});

它涉及以下领域:

<td>
    <input type="text" name="ihcnummer"          id="ihcnummer" value="" class="form-control"  placeholder="e.g. SP1234567">
</td>    

这适用于Chrome,但由于某种原因(我看不到/不理解),这在IE中无效。如果我输入例如SP1234567,Chrome会接受此信息并更新数据库,但IE会向我显示警报并且不会更新数据库。 如果我为此字段尝试不同的值,例如SP1234它将返回警告。

我尝试了.val(),还尝试了.attr('value')

为什么IE和Chrome之间存在差异?我如何确保这适用于两种浏览器?

希望你能帮助我。

1 个答案:

答案 0 :(得分:0)

问题区域是.attr('value')的使用情况,当您获得value属性时,它将始终获取您设置为''的空字符串

使用

$("#ihcnummer").val().length

而不是

$("#ihcnummer").attr('value').length