2011-04-27 85 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