2011-04-27 2 views
1

페이지에 드롭 다운 목록이 있습니다. jquery 및 해당 작업을 사용하여이 드롭 다운 목록에서 change 이벤트를 구현합니다. 여기 내 jquery 코드입니다.select change 이벤트에서 문제가 발생했습니다.

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 코드도이 변경 이벤트에 대해 실행됩니다. 이제 두 개의 드롭 다운 목록에서 change 이벤트가 실행되었습니다. 그리고 'title'이라는 이름을 가진 첫 번째 드롭 다운 목록에서만 실행되기를 원합니다.

내 문제를 해결할 수있는 모든 일 ...

편집 : JQuery와 .change() 이벤트가 셀렉터에 일치하는 모든 요소에 바인딩

$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

+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

답변

0

$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

+0

나는 내 대답을 업데이트했으며 지금은 더 명확 해지기를 바랍니다. – andyb

관련 문제