2013-09-06 3 views
1

텍스트 필드에 ajax 콜백을 작성했으며이 이벤트는 blur 이벤트에서 호출됩니다.drupal에서 양식을 아약스로 호출하기 전에 조건을 검사하십시오.

하지만 아약스 콜백을하기 전에 텍스트 필드가 비어 있지 않은 조건을 확인하고 싶습니다.

그래서 textfield가 비어 있지 않으면 ajax 콜백이 호출되고 그렇지 않으면 호출되지 않아야합니다. 사전에

덕분에

form_example 내가 인쇄용입니다

양식 제어

$form['price_form']['item'] = array(
    '#type' => 'textfield', 
    '#title' => 'Item Name?', 
    '#size' => 10, 
    '#maxlength' => 25, 
    '#id' => 'nameId', 
    '#required' => TRUE, 
    '#ajax' => array(
     // #ajax has two required keys: callback and wrapper. 
     // 'callback' is a function that will be called when this element changes. 
     'callback' => 'form_example_simplest_callback', 
     'wrapper' => 'listDiv', 
     'effect' => 'fade', 
    ), 
    '#autocomplete_path' => 'examples/form_example/item_name_autocomplete_callback', 
); 

JS 코드

(function($){ 
    $(document).ready(function(){ 
     alert('Hi, Javascript successfully attached'); 

     Drupal.behaviors.form_example = { 
      attach: function (context, settings) { 

       // Overwrite beforeSubmit 
       Drupal.ajax['nameId'].options.beforeSubmit = function (form_values, element, options) { 
        alert('dsf'); 
       } 
      } 
     }; 
    }); 
})(jQuery); 

내 모듈 이름입니다 테스트를 위해 경고를 보내고 있습니다. 나는 그 이름과 ID로 시도했지만 경계하지 않았습니다.

alert('Hi, Javascript successfully attached'); 

답변

7

api 형식의 ajax 구현을 사용하면 제출 전에 실행될 'beforeSubmit'핸들러를 지정할 수 있습니다. 이에 따르면 : http://malsup.com/jquery/form/#options-object 해당 함수가 false를 반환하면 양식이 제출되지 않습니다.

당신은 같은 beforesubmit 핸들러 뭔가 추가 할 수 있어야한다 :

Drupal.behaviors.MyModule = { 
    attach: function (context, settings) { 

    // Overwrite beforeSubmit 
    Drupal.ajax['your_element'].options.beforeSubmit = function (form_values, element, options) { 
     // check the textfield isn't blank then return false; 
    } 
    } 
}; 
+0

, 나는 당신에게하지만 여전히 간단한 경고를받지 따라 질문을 편집 한 응답 주셔서 감사합니다. –

+0

Drupal.ajax 객체에서 어떤 요소가 호출되는지 확인할 수 있습니다. chrome dev 도구에있는 경우 console.log (Drupal.ajax)를 실행하면 실제로는 'edit-price_form-item'과 유사 할 수 있습니다 – Andrew

+0

콘솔에서 오류가 발생했습니다. Uncaught TypeError : 'undefined'속성 'options'을 읽을 수 없습니다. –

관련 문제