[required]字段的解决方法不适用于下拉框

时间:2016-02-08 16:03:01

标签: javascript jquery html twitter-bootstrap

我正在使用Bootstrap 3验证表单中的字段,并且我发现使用某些浏览器,特别是ios safari,我的[required]表单项未经验证。为了弥补这一点,我创建了一个脚本来检查元素是否已被标记为必需,如果该字段的值为'',则会出现警报。它适用于文本框字段,但由于某种原因,它似乎没有检查下拉框。我在所有下拉框中都使用占位符,其值为'',因此应该看到那些没有正确填写。

我的脚本在这里

$("form").submit(function(e) {
    var mobile = "<?php echo $_SESSION['ads']; ?>";
    var ref = $(this).find("[required]");

    if(mobile == 0){
        $(ref).each(function(){
            if ( $(this).val() == '' )
            {
                alert("Required field should not be blank.");

                $(this).focus();

                e.preventDefault();
                return false;
            }
        }); 
    }return true;
});

以下是我的一个表单的示例:

      <div class="form-group required">
        <label for="donationType">Type</label>
        <select class="form-control" name="donationType" id="donationType" style="min-width: 140px;" required>
          <option value="" disabled selected>-</option>
          <option>Item</option>
          <option>Mileage</option>
          <option>Money</option>
          <option>Time</option>
        </select>
      </div>

对此的任何见解将不胜感激。或者在不支持正常引导程序验证的浏览器上验证的任何其他方法。

1 个答案:

答案 0 :(得分:2)

添加

condition = str>='a' & str <='z'; % | ...
string=string[condition];

它也适用于Safari:

$(this).val() == null || 
$("form").submit(function(e) {
    var mobile = "0";
    var ref = $(this).find("[required]");
console.log(ref);
    if(mobile == 0){
console.log(0);
        $(ref).each(function(){
            if ( $(this).val() == null || $(this).val() == '' )
            {
                alert("Required field should not be blank.");

                $(this).focus();

                e.preventDefault();
                return false;
            }
        }); 
    }
    return true;
});