2011-04-27 73 views
1

我在頁面上有一個下拉列表。我使用jquery在其下拉列表中實現了更改事件,並且它的工作正常。這裏是我的jQuery代碼。選擇更改事件中的問題

drupal_add_js('$(document).ready(
     $('.$form['title']['select'].').change(function() { 
    var str = ""; 
     var date = ""; 
    $("'.$form['title']['select'].' option:selected").each(function() { 
     str += $(this).text() + " "; 
     date += this.value + " "; 
      $("#edit-titletext").val(str); 
      $("#edit-datetext").val(date); 

    }); 

    }) 
    ) 
    .change();', 'inline', 'header'); 

其中title是字段名稱,select是它的類型。 titletext和datetext是文本框的字段名稱。我的代碼工作得很好。

但在同一頁上我放置了一個有另一個下拉列表的塊。現在,當我更改塊的下拉列表中的值時,該jQuery代碼也針對此更改事件執行。現在在兩個下拉列表中執行更改事件。 而我希望它只能在第一個下拉列表中執行,該列表中有一個名稱「標題」。

任何一個誰可以解決我的問題......

編輯:

$form = array(); 
$form['title'] = array(
    '#type' => 'select', 
    '#title' => t('Select a forum'), 
    '#page callback' => 'drupal_get_form', 
    '#page arguments' => array('test_select'), 
    '#access callback' => TRUE, 
    '#options' => $options 
); 
+0

您可以添加您使用的PHP'$ form'對象,以便可以確定正確的選擇器嗎? – andyb 2011-04-27 12:37:06

+0

這是我的表單代碼。 $form = array(); $form['title'] = array( \t '#type' => 'select', \t '#title' => t('Select a forum'), \t '#page callback' => 'drupal_get_form', \t '#page arguments' => array('test_select'), \t '#access callback' => TRUE, \t '#options' => $options, \t ); Ahmad 2011-04-28 04:44:34

回答

0

jQuery的.change()事件被綁定到選擇器匹配的所有元素的$form對象被任何$form['title']['select']生產等同於。

所以,如果$form['title']['select'] = .mySelect然後將得到的聲明將是:

$('.mySelect').change(function() {...}); 

等都將改變功能()到CSS類.mySelect匹配任何元素進行綁定。

因此,如果我假設您的$form對象被稱爲myForm,那麼以下內容應將事件綁定到僅CSS選擇器select[name="title"]

$('select[name="'.$form['myForm']['#title'].'"]').change(function() {...}); 

編輯:我不知道哪一部分你不明白。你的問題不完整,所以我提供了足夠的信息讓你能夠自己解決問題。這且不說,你應該只需要更改jQuery選擇到:

$('select[name="title"]').change(... 

$('select[name="title"] option:selected').each(... 

,因爲已經知道<select>的名字,爲什麼不剛剛替補呢?

此外,我想你可能會發現jQuery selectors文檔有用。

+0

你的代碼太複雜了。請在我的代碼中添加您的代碼,以便我可以使用它。還要告訴我應該將哪些屬性添加到下拉列表中?謝謝 – Ahmad 2011-04-28 04:43:46

+0

我已經更新了我的答案,我希望現在更清楚。 – andyb 2011-04-28 10:45:52