【问题标题】:.val returns a different value for IE than Chrome.val 为 IE 返回与 Chrome 不同的值
【发布时间】:2016-11-02 11:39:25
【问题描述】:

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

我想要检查表单的输入字段是否为空,或者是否包含 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 有区别?以及如何确保这在两种浏览器上都适用?

希望你能帮助我。

【问题讨论】:

  • 尝试使用纯js document.getElementById("ihcnummer").value

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


【解决方案1】:

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

使用

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

而不是

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

【讨论】:

  • 感谢您的回复!但是,您现在建议的解决方案是我最初使用的解决方案。你有别的想法吗?
猜你喜欢
  • 2014-08-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-02
  • 2019-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-06
相关资源
最近更新 更多