0

私はこのフォームを持っています

<form class="form" method="post">
<input type="text" id="input_what" holder="what" />
<input type="text" id="input_where" holder="where" />
<input type="submit" value="submit" />
</form>

フォームの送信を防ぐためのこのスクリプト

$('.form').submit(function(e) {
var what = $('#input_what').val();
var where = $('#input_where').val()
if ( what == "what" || what ==""  &&  where == "where" || where == "") {
   e.preventDefault();
   console.log('prevented empty search');
   return false;
}     
});

私の状態が機能しないことは知っていますが、このように機能する必要があります

 IF (what == "what" OR what == "") AND (where == "where" OR where == "")

このフィドルを見て、 http://jsfiddle.net/pK35e/の理由を理解してください。

私が使用しているプレースホルダースクリプトは、上記の場合のフォームを送信しないようにする必要があります。使用することはplaceholder="attribute"私にとって解決策ではないので、誰かがこのif-conditionを設定する方法のヒントを教えてもらえますか?

4

5 に答える 5

4

作成したテキストの説明と同じように括弧を使用します。

if (( what == "what" || what =="")  &&  (where == "where" || where == "")) {

補足:IE9-ではサポートされていないため、将来のバージョンでは、これを簡単にするプレースホルダー属性に興味があるかもしれません。

于 2013-03-05T17:40:19.110 に答える
2

これを試して

if ( (what == "what" || what =="")  &&  (where == "where" || where == ""))
于 2013-03-05T17:40:17.117 に答える
2
IF ((what == "what" ||what == "") &&(where == "where" ||where == ""))
于 2013-03-05T17:41:01.940 に答える
2

必要なものを取得するには、括弧が必要だと思います。

if ( (what == "what" || what =="")  &&  (where == "where" || where == ""))

これは、両方が

(what == "what" || what =="") 

(where == "where" || where == "") 

ifステートメント内のコードを実行するには、trueを返す必要があります。これは実際にはテキストの例に非常に近いものです。

-

このすべてを理解するためだけに。古いコードは、括弧付きで次のようになります。

if ( (what == "what") || (what ==""  &&  where == "where") || (where == "")) {

ここでも、これらの1つだけがtrueを返す必要があります。

于 2013-03-05T17:42:07.983 に答える
2

括弧を使用します。演算子は、演算子&&よりも優先され||ます。

if ((what == "what" || what =="") && (where == "where" || where == ""))

http://en.m.wikipedia.org/wiki/Order_of_operations

于 2013-03-05T17:42:37.327 に答える