Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Drupal自定义模块中单击3次后禁用Drupal按钮_Javascript_Jquery_Drupal_Drupal 7 - Fatal编程技术网

Javascript 在Drupal自定义模块中单击3次后禁用Drupal按钮

Javascript 在Drupal自定义模块中单击3次后禁用Drupal按钮,javascript,jquery,drupal,drupal-7,Javascript,Jquery,Drupal,Drupal 7,我是Drupal的新手 我构建了类似于webform的自定义模块 我的模块页面包含两个提交按钮和两个文本框,如下所示: function contact_request($form, &$form_state) { $form ['info'] =array( '#markup' => "<div id='pageRequestDiv'>", ); $form['number'] = array( '#prefix' =

我是Drupal的新手

我构建了类似于webform的自定义模块 我的模块页面包含两个提交按钮和两个文本框,如下所示:

function contact_request($form, &$form_state) {
 $form ['info'] =array(   
    '#markup' => "<div id='pageRequestDiv'>",    
  );  

    $form['number'] = array(
    '#prefix' => '<div class="webform-container-inline2">',
    '#suffix' => '</div>',
    '#type' => 'textfield',
    '#title' => t('Number'),
    '#size' => 20,
    '#maxlength' => 255,
    '#attributes'=>array('class'=>array('txtli')),  
    '#required'=>true,
  );

  $form['send_vcode'] = array(
    '#prefix' => '<div style="margin-top:30px;">',
    '#suffix' => '</div><br/><br/>',
    '#type' => 'submit',
    '#value' => t('Send Verification Code'),
    '#ajax' => array(
       'callback' => 'send_Verification_code_callback',
       'wrapper' => 'ContactUsMsgDiv',          
       'method'=>'replace',
       'effect'=>'fade',
    ),        
  );

    $form['verification_code'] = array(
    '#prefix' => '<div class="webform-container-inline2">',
    '#suffix' => '</div>',
    '#type' => 'textfield',
    '#title' => t('Verification Code'),
    '#size' => 20,
    '#maxlength' => 255,
    '#attributes'=>array('class'=>array('txtli')),  
    '#required'=>true,
  );

 $form['sendmail'] = array(
    '#prefix' => '<div style="margin-top:30px;">',
    '#suffix' => '</div></div>',
    '#type' => 'submit',
    '#value' => t('Send Request'),
    '#ajax' => array(
       'callback' => 'get_contact_us_callback',
       'wrapper' => 'ContactUsMsgDiv',          
       'method'=>'replace',
       'effect'=>'fade',
    ),        
  );
  return $form;
}
功能联系人请求($form,&$form\u状态){
$form['info']=数组(
“#标记”=>”,
);  
$form['number']=数组(
“#前缀”=>”,
“#后缀”=>”,
“#键入”=>“文本字段”,
“#title”=>t('Number'),
“#大小”=>20,
“#maxlength”=>255,
“#attributes”=>array('class'=>array('txtli')),
“#必需”=>正确,
);
$form['send_vcode']=数组(
“#前缀”=>”,
“#后缀“=>”

”, “#键入”=>“提交”, “#值”=>t(“发送验证码”), “#ajax”=>数组( “回调”=>“发送验证码回调”, 'wrapper'=>'ContactUsMsgDiv', '方法'=>'替换', “效果”=>“褪色”, ), ); $form['verification_code']=数组( “#前缀”=>”, “#后缀”=>”, “#键入”=>“文本字段”, “#title”=>t(“验证码”), “#大小”=>20, “#maxlength”=>255, “#attributes”=>array('class'=>array('txtli')), “#必需”=>正确, ); $form['sendmail']=数组( “#前缀”=>”, “#后缀”=>”, “#键入”=>“提交”, “#value”=>t('Send Request'), “#ajax”=>数组( 'callback'=>'get_contact_us_callback', 'wrapper'=>'ContactUsMsgDiv', '方法'=>'替换', “效果”=>“褪色”, ), ); 返回$表格; }
用户在第二个文本框中键入sms后,首先输入号码,然后单击第一个按钮向手机发送sms,然后单击发送

我想禁用用户单击3次后的第一个按钮

我尝试了下面的JS,但一次点击就禁用了两个按钮。我只想在单击3次后禁用第一个按钮

     Drupal.behaviors.hideSubmitButton = {
          attach: function(context) {
            $('form.node-form', context).once('hideSubmitButton', function () {
              var $form = $(this);
              $form.find('input.form-submit').click(function (e) {
                var el = $(this);
                el.after('<input type="hidden" name="' + el.attr('name') + '" value="' + el.attr('value') + '" />');
                return true;
              });
              $form.submit(function (e) {
                if (!e.isPropagationStopped()) {
                  $('input.form-submit', $(this)).attr('disabled', 'disabled');
                  return true;
                }  
              });
            });
          }
        };
Drupal.behaviors.hideSubmitButton={
附加:函数(上下文){
$('form.node form',context).once('hideSubmitButton',函数(){
var$form=$(此);
$form.find('input.form submit')。单击(函数(e){
var el=$(本);
el.在(“”)之后;
返回true;
});
$form.submit(功能(e){
如果(!e.isPropagationStopped()){
$('input.form submit',$(this)).attr('disabled','disabled');
返回true;
}  
});
});
}
};
更新代码:
函数发送\验证\代码\回调($form,&$form\状态){ 一些发送短信的代码 返回$表格; }

功能联系人请求($form,&$form\u state){
$form['#prefix']='';
$form['#后缀']='';
$form['info']=数组(
“#标记”=>”,
);  
$form['contact_number']=数组(
“#前缀”=>”,
“#后缀”=>”,
“#键入”=>“文本字段”,
“#title”=>t(“联系电话”),
“#大小”=>20,
“#maxlength”=>255,
“#attributes”=>array('class'=>array('txtabili')),
“#必需”=>正确,
);
$form['verification_code']=数组(
“#前缀”=>”,
“#后缀”=>”,
“#键入”=>“文本字段”,
“#title”=>t(“验证码”),
“#大小”=>20,
“#maxlength”=>255,
“#attributes”=>array('class'=>array('txtabili')),
“#必需”=>正确,
);
$form['send_vcode']=数组(
“#前缀”=>”,
“#后缀“=>”

”, “#键入”=>“提交”, “#值”=>t(“发送验证码”), “#ajax”=>数组( “回调”=>“发送验证码回调”, “包装器”=>“我的表单包装器”, '方法'=>'替换', “效果”=>“褪色”, ), ); $form['sendmail']=数组( “#前缀”=>”, “#后缀”=>”, “#键入”=>“提交”, “#value”=>t('Send Request'), “#ajax”=>数组( 'callback'=>'get_contact_us_callback', 'wrapper'=>'ContactUsMsgDiv', '方法'=>'替换', “效果”=>“褪色”, ), ); $form['clicks']=数组( “#类型”=>“值”, ); if(设置($form_state['values']['clicks'])){ 如果($form_state['values']['clicks']==3){ $form['send#vcode']['disabled']=TRUE; }否则{ $form['clicks']['#value']=$form_state['values']['clicks']+1; } }否则{ $form['clicks']['#value']=0; }
我会使用AJAX回调而不是JavaScript检查

用一些div包装整个表单:

$form['#prefix'] = '<div id="my-form-wrapper">';
$form['#suffix'] = '</div>';
(还包括表单中的消息区域)。在
send\u Verification\u code\u callback
函数中,返回整个表单

诀窍是将组件添加到表单中,该表单将包含点击次数:

$form['clicks'] = array(
  '#type' => 'value',
);
if (isset($form_state['values']['clicks'])) {
  if ($form_state['values']['clicks'] == 3) {
    $form['send_vcode']['#disabled'] = TRUE;
  } else {
    $form['clicks']['#value'] = $form_state['values']['clicks'] + 1;
  }
} else {
    $form['clicks']['#value'] = 0;
}
单击
send\u vcode
按钮3次后,它将被禁用

==更新===

下面是工作代码(没有所有不必要的内容),它显示了
pageabilitirequestdiv
div中剩余的点击量:

function contact_us_request($form, &$form_state) {
  $form['#prefix'] = '<div id="my-form-wrapper">';
  $form['#suffix'] = '</div>';

  $form['clicks'] = array(
    '#type' => 'value',
  );

  $clicks_max = 3;
  if (isset($form_state['values']['clicks'])) {
    $form['clicks']['#value'] = $form_state['values']['clicks'] + 1;
    $clicks_left = $clicks_max - 1 - $form_state['values']['clicks'];
  } else {
    $form['clicks']['#value'] = 0;
    $clicks_left = $clicks_max;
  }

  $form ['info'] =array(
    '#markup' => '<div id="pageAbiliRequestDiv">'
      . t('Clicks left: @clicks_left', array('@clicks_left' => $clicks_left))
      . '</div>',
  );

  $form['send_vcode'] = array(
    '#prefix' => '<div style="margin-top:30px;">',
    '#suffix' => '</div><br/><br/>',
    '#type' => 'button',
    '#value' => t('Send Verification Code'),
    '#ajax' => array(
      'callback' => 'send_Verification_code_callback',
      'wrapper' => 'my-form-wrapper',
      'method'=>'replace',
      'effect'=>'fade',
    ),
  );

  if ($clicks_left == 0) {
    $form['send_vcode']['#disabled'] = TRUE;
  }

  return $form;
}

function send_Verification_code_callback($form, &$form_state) {
  return $form;
}
功能联系人请求($form,&$form\u状态){
$form['#prefix']='';
$form['#后缀']='';
$form['clicks']=数组(
“#类型”=>“值”,
);
$clicks_max=3;
if(设置($form_state['values']['clicks'])){
$form['clicks']['#value']=$form_state['values']['clicks']+1;
$clicks_left=$clicks_max-1-$form_state['values']['clicks'];
}否则{
$form['clicks']['#value']=0;
$clicks\u left=$clicks\u max;
}
$form['info']=数组(
“#标记”=>”
.t('Clicks left:@Clicks_left',数组('@Clicks_left'=>$Clicks_left))
. '',
);
$form['send_vcode']=数组(
“#前缀”=>”,
“#后缀“=>”

”, “#键入”=>“按钮”, “#值”=>t(“发送验证码”), “#ajax”=>数组( “回调”=>“发送验证码回调”, “包装器”=>“我的表单包装器”, '方法'=>'替换', “效果”=>“褪色”, ), ); 如果($clicks_left==0){ $form['send#vcode']['disabled']=TRUE; } 返回$f
$form['clicks'] = array(
  '#type' => 'value',
);
if (isset($form_state['values']['clicks'])) {
  if ($form_state['values']['clicks'] == 3) {
    $form['send_vcode']['#disabled'] = TRUE;
  } else {
    $form['clicks']['#value'] = $form_state['values']['clicks'] + 1;
  }
} else {
    $form['clicks']['#value'] = 0;
}
function contact_us_request($form, &$form_state) {
  $form['#prefix'] = '<div id="my-form-wrapper">';
  $form['#suffix'] = '</div>';

  $form['clicks'] = array(
    '#type' => 'value',
  );

  $clicks_max = 3;
  if (isset($form_state['values']['clicks'])) {
    $form['clicks']['#value'] = $form_state['values']['clicks'] + 1;
    $clicks_left = $clicks_max - 1 - $form_state['values']['clicks'];
  } else {
    $form['clicks']['#value'] = 0;
    $clicks_left = $clicks_max;
  }

  $form ['info'] =array(
    '#markup' => '<div id="pageAbiliRequestDiv">'
      . t('Clicks left: @clicks_left', array('@clicks_left' => $clicks_left))
      . '</div>',
  );

  $form['send_vcode'] = array(
    '#prefix' => '<div style="margin-top:30px;">',
    '#suffix' => '</div><br/><br/>',
    '#type' => 'button',
    '#value' => t('Send Verification Code'),
    '#ajax' => array(
      'callback' => 'send_Verification_code_callback',
      'wrapper' => 'my-form-wrapper',
      'method'=>'replace',
      'effect'=>'fade',
    ),
  );

  if ($clicks_left == 0) {
    $form['send_vcode']['#disabled'] = TRUE;
  }

  return $form;
}

function send_Verification_code_callback($form, &$form_state) {
  return $form;
}