【问题标题】:jQuery logical operator not working as expected [duplicate]jQuery逻辑运算符未按预期工作[重复]
【发布时间】:2013-06-23 02:55:33
【问题描述】:

我有下面的代码不工作。

var book_id = $('#indexBookSearch');
var tag_id  = $('#indexTagSearch');

if((book_id.val() == "") || (tag_id.val() == ""))
{
    $('#userMessages').html('<div class="alert alert-info">'+
        '<button type="button" class="close" data-dismiss="alert">&times;'+
        '</button>'+
        '<strong>Information ! </strong> Please select search criteria first.'+
    '</div>');
    return false;
}

if((book_id.val() == "") || (tag_id.val() == "")) 这一行不起作用,即使其中任何一个字段包含 value

BookTag 都是 select box 我已经使用 console.log() 检查了它们的值,并且它完美无缺。

我也变了

if((book_id.val() == "") || (tag_id.val() == ""))

if(book_id.val() == "" || tag_id.val() == "")

编辑

HTML 表单

<form id="indexSearchForm" action="books/listTags" method="POST">
    <fieldset>
        <legend>Search Criteria</legend>

        <label>Select Book</label>
        <select class="input-large" name="book_id" id="indexBookSearch">
            <option value="">--Select--</option>
            <option value="109">book 1</option>
        </select>

        <label>Select Tag</label>
        <select class="input-large" name="tag_id" id="indexTagSearch">
            <option value="">--Select--</option>
            <option value="10">adding</option>
            <option value="1">Apples</option>
            <option value="39">article</option>
            <option value="34">bhg</option>
            <option value="40">boon</option>
        </select>       
        <button class="btn btn-primary" type="submit">Submit</button>
    </fieldset>
</form>

jQuery 代码

$('#indexSearchForm').submit(function(e)
{
    e.preventDefault();

    var book_id = $('#indexBookSearch');
    var tag_id  = $('#indexTagSearch');

    if( !book_id.val() || !tag_id.val())
    {
        $('#userMessages').html('<div class="alert alert-info">'+
            '<button type="button" class="close" data-dismiss="alert">&times;</button>'+
            '<strong>Information ! </strong> Please select search criteria first.'+
        '</div>');
        return false;
    }
    // more process
});

谢谢。

【问题讨论】:

  • 你在寻找什么逻辑?如果其中一个填写,那你还好吗?或者如果两者都没有填写,那么有问题吗?还有什么?
  • @Aiias 我想验证表单以要求用户填写任一表单字段..
  • 如果您放置 HTML 会很棒,我认为您的选择框的“空”选项类似于“”而不是“”
  • @Aguardientico 如果您忘记阅读问题,那很好...我提到我还使用console.log() 检查它并且值正确出现..
  • @DipeshParmar 您的代码处于工作状态。检查小提琴链接:jsfiddle.net/B6ZFS

标签: jquery logical-operators


【解决方案1】:

您需要对字符串使用 === 运算符...

if((book_id.val() === "") || (tag_id.val() === ""))

你也可以这样...

if((book_id.val().charAt(0))||(tag_id.val().charAt(0)) {

//stuff if true - if either has a value
//Do whatever you want here, submit the form, navigate away, database...etc

} else {

//return error
$('#userMessages').html('<div class="alert alert-info">'+
    '<button type="button" class="close" data-dismiss="alert">&times;'+
    '</button>'+
    '<strong>Information ! </strong> Please select search criteria first.'+
'</div>');
return false;

}

像这样……

【讨论】:

  • 该死的..你的代码工作但以不同的方式工作......现在表单在两个为空白时发布,并且当任一或填充值时显示错误......哈哈哈
  • 是的,我知道,你应该把你的代码放在底部的 else 语句中,真正的东西是如果他们确实输入了一些东西,所以只需将错误切换到 else 下面的底部...... ..成功在上面
  • 再试一次,把代码放在下半部分
  • WTF 那行得通.. 奇怪,但它的工作... 非常非常奇怪..
  • 它检查值而不是空虚......它按照您的期望向后工作
【解决方案2】:

怎么样:

if( !book_id.val().length || !tag_id.val().length )

编辑 再看一遍,如果两者都没有填写,警告他们——这是一个和声明:

if( !book_id.val().length && !tag_id.val().length )

【讨论】:

  • 实际上,我认为这应该是AND 而不是OR
  • 好吧,我说我想要或者条件不是AND..
  • 已向下滚动,没有看到对原始问题的修改...
  • 但是等一下!我看到了你背后的逻辑......它会起作用!
  • 真的,只有当两个字段都为空时,我的编辑才会警告用户。我相信这符合你的标准。如果选择了一个,则评估为假,如果同时选择了两个,则为假。 - 哈,假的,很好? :]
【解决方案3】:

empty试试这个

if( empty(book_id.val()) || empty(tag_id.val()) )

或者BETTER也可以试试.lengthlike

if ( (book_id.val().length != 0 ) || (tag_id.val().length != 0 ))

您可以使用trim 来删除空格可以说修剪

【讨论】:

    【解决方案4】:

    尝试减少你的价值,它可能包含价值。工作FIDDLE

    if ((book_id.val().trim() === "") || (tag_id.val().trim() === "")) {
        alert('true');
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-29
      • 2021-08-19
      • 1970-01-01
      • 2021-06-12
      • 2020-11-25
      • 1970-01-01
      • 2020-12-24
      相关资源
      最近更新 更多