1

私は2つの選択メニューを要求しています

  1. 居住者の建物番号と
  2. 彼らのアパート番号

訪問者がいずれかのメニューの最後の項目(両方とも同じvalue, textclass)を選択した場合、フォームを非表示にしてメッセージを表示する関数を呼び出したいと思います。

この関数は、非居住者がクリックする可能性のあるスタンドアロンリンクを介して呼び出されるため、正常に機能しています:(ここに住んでいませんか?)

私が仕事をすることができないselectのはchange()、その最後のオプションが選択された場合に、そのイベントに関数を呼び出させることです。

これが私の選択コードの簡単なバージョンです:

<form id="document-request" name="document-request" class="clearfix">
    <label>Your Full Name:
        <input type="text" name="fullname" value="" class="span12"
        required>
    </label>
    <label>Your Email:
        <input type="text" name="email" value="" class="span12 email"
        required>
    </label>
    <label for="building">Your Bldg &amp; Apt#:</label>
    <select name="building" class="span2" required>
        <optgroup label="Building">
            <option value="" name="building">--</option>
            <option value="1" name="building">1</option>
            <option value="2" name="building">2</option>
            <option value="3" name="building">3</option>
            <option value="4" name="building">4</option>
            <option value="5" name="building">5</option>
            <option value="6" name="building">6</option>
            <option value="7" name="building">7</option>
        </optgroup>
        <option value="nonresident" name="building" class="dontlivehere">I Don’t Live Here</option>
    </select>

そしてこれがjQueryです:

$('#document-request select').change(function () {
    var theValue = $(this).child('option:selected').text();
    if ((theValue).contains('Live Here')) {
        residenceAlert();
    }
});

value私はまた、と同様に行動することによってこれを達成しようとしましたclass
私はそのクラスを本当に必要としませんdontlivehere、それは解決策を見つけようとしている私の一部にすぎません。

進行中のサンプルページはここにあります

4

5 に答える 5

4

.child()有効なjQuery関数ではありません。試してください.find()

var theValue = $(this).find('option:selected').text();

私はおそらく次のようなものを使用します:

if ($(this).find('option:selected').val() === 'nonresident') {
    residenceAlert();
}
于 2013-03-13T22:35:15.307 に答える
1

ブラウザデバッガコンソールに次のエラーが表示されます。

Uncaught TypeError: Object [object Object] has no method 'child' 

child()jQueryメソッドではありません。

たとえば、これをfind()に変更します。

に置き換えた後child()find()ブラウザに応じて、次に発生する可能性のあるエラーは次のとおりです。

Uncaught TypeError: Object has no method 'contains' 

string.contains()はFireFoxでのみサポートされています。もちろん、他のブラウザをサポートする必要がない場合を除いて、代わりにindexOf()を使用する方がよい場合があります。

完全なコードは次のようになります。

$('select').change(function () {
    var theValue = $(this).find('option:selected').text();
    if (theValue.indexOf('Live Here')) {
        residenceAlert();
    }
});

デモ-.find()とのindexOf()


于 2013-03-13T22:41:19.190 に答える
0

これは私のために働きます:

HTML

<select id="building" name="building" class="span2" required>
    <optgroup label="Building">
    <option value="" name="building">--</option>
    <option value="1" name="building">1</option>
    <option value="2" name="building">2</option>
    <option value="3" name="building">3</option>
    <option value="4" name="building">4</option>
    <option value="5" name="building">5</option>
    <option value="6" name="building">6</option>
    <option value="7" name="building">7</option>
    </optgroup>  
    <option value="nonresident" name="building" class="dontlivehere">I Don’t Live Here</option>
  </select>

jquery:

$(document).ready(function(){
$('select#building').change(function() {
      var theValue = $('option:selected').text();
        console.log(theValue);
      if ((theValue).contains('Live Here')) {
      alert("it works!");
   }
});
});
于 2013-03-13T22:38:03.290 に答える
0

この行にすべきではありません:

if ((theValue).contains('Live Here')) {

いう:

if ((theValue).contains("I Don't Live Here")) {
于 2013-03-13T22:33:47.247 に答える
0

2つの問題:

1)子メソッド。

2)メソッドが含まれています。

var theValue = $(this).find('option:selected').text();
if( theValue.indexOf('Dont Live Here') >= 0){
    residenceAlert()
}
于 2013-03-13T22:40:14.090 に答える