2015-01-20 2 views
-1

Раньше у меня есть кусок кодаBind по всей форме не работает

$(document).bind('keyup', function(e) 
{ 
    if (e.keyCode === 13 && $('#domain_name_url').is(':focus')) 
    { 
     alert("hii"); 
     $("#submit_replace_button").click(); 
    } 
    else if(e.keyCode === 13 && $('#search_domain').is(':focus')) 
    { 
     //$("#submit_search_button").click(); 
    } 
}); 

, который используется для работы.

Теперь я сделал простое изменение, потому что хочу, чтобы эта работа выполнялась только тогда, когда событие keyup находится внутри элементов формы.

Так что я изменил его на

$("#m_domain input[type=text]").on('keyup', function(e) 
{ 
    if (e.keyCode === 13 && $('#domain_name_url').is(':focus')) 
    { 
     alert("hii"); 
     $("#submit_replace_button").click(); 
    } 
    else if(e.keyCode === 13 && $('#search_domain').is(':focus')) 
    { 
     //$("#submit_search_button").click(); 
    } 
}); 

Теперь, похоже, он не работает. Что я сделал не так?

Вот мой полный HTML

<form action="domains.php#searchdomain" method="post" name="m_domain" id="m_domain" 
     onsubmit = "return primalValidate()"> 
     <a name="searchdomain"></a> 
     <table class="dataTable" width="100%" border="0" cellspacing="0" cellpadding="5" id="" style="text-align:center; margin-top:0px; border-left:1px solid #ddd; border-right:1px solid #ddd; border-top:1px solid #ddd;"> 
      <tr> 
      <td align="left" colspan="2"><div id="display_message" <?php echo $sstyle; ?>><?php echo $dis_msg; ?></div></td> 
      </tr> 
      <tr> 
      <td align="left">Search Domain</td> 
      <td align="left" style="display:none;" id="apply_text">Replace Selected Domains With</td> 
      </tr> 

      <tr> 
      <td align="center"> 
      <table width="100%" border="0" cellspacing="0" cellpadding="0"> 
       <tr> 
        <td><input class="input_field" name="search_domain" id="search_domain" value="<?php echo $search_domain; ?>" type="text"></td> 
        <td>&nbsp;</td> 
        <td><input type="submit" class="btn blue_button" 
        name="submit_domain_form" id="submit_search_button" 
        value="Search"/></td> 
       </tr> 
       </table> 
      </td> 
      <td align="center"> 
      <table width="100%" border="0" cellspacing="0" cellpadding="0" id="apply_button" style="display:none;"> 
       <tr> 
        <td><input class="input_field" name="domain_name_url" id="domain_name_url" value="<?php echo $domain_name_url; ?>" type="text"></td> 
        <td>&nbsp; 
        <input name="domain_replace_id" id="domain_replace_id" 
        value="" type="hidden"> 
        <input name="domain_replace_link" id="domain_replace_link" 
        value="" type="hidden"> 
        </td> 
        <td><input type="submit" class="btn blue_button" 
        name="submit_domain_form" id="submit_replace_button" 
        value="Apply"/></td> 
       </tr> 
       </table> 
       </td> 
       <td align="center"> 
       <input type="hidden" name="submit" value="Apply"/> 
       </td> 
      </tr> 
      <tr> 
      <td align="center"> 
       <table width="100%" border="0" cellspacing="0" cellpadding="0"> 
        <tr> 
         <td><input type="checkbox" name="status_domain" id="status_domain" <?php if($status_domain){?> checked <?php } ?>>&nbsp;Include inactive campaigns in search.</td> 
         <td>&nbsp;</td> 
         <td>&nbsp;</td> 
        </tr> 
       </table> 
      </td> 
      <td align="center">&nbsp;</td> 
      </tr> 

     </table> 
     <?php 
     echo '<div style="border-bottom:1px solid #ddd; border-left:1px solid #ddd; border-right:1px solid #ddd; width:100%; padding:10px;">'; 
     if(sizeof($request_list) > 0) 
     { 
     echo ' 
     <div class="pg_wrapper"> 
     <div class="progress" style="width:80%;float: left;position: relative; top: 0; z-index: 999; display: none;"><div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" ></div></div><div id="cancel_load" style="float: left; height: 23px; font-size: 12px; vertical-align:middle; padding-left: 5px; display: none;"><a style="color:#428bca;" href="javascript:void(0);" ><strong>Cancel</strong></a> 
     </div> 
     <div class="clearfix"></div> 
     </div> 
     '; 
     } 
     echo '</div>'; 
     ?> 
     <div id="lp_pages_table" style="padding: 10px; border-left: 1px solid #ddd; border-right: 1px solid #ddd; border-bottom: 1px solid #ddd;"> 
      <table class="display compact" width="100%" border="0" cellspacing="0" cellpadding="5" id="domains_list" style="margin-top:0px; border:1px solid #ddd;"> 
       <thead> 
        <tr> 
        <th style="text-align:center;"><input type="checkbox" name="chk_all" class="checkall" id="checkedAll"></th> 
        <th>URL</th> 
        <th>Type</th> 
        <th>ID</th> 
        <th>Campaign</th> 
        <th>Status</th> 
        </tr> 
       </thead> 
      </table> 

     </div> 
     </form> 

Вот мой общий код JavaScript.

$("#m_domain input[type=text]").on('keyup', function(e) 
{ 
    if (e.keyCode === 13 && $('#domain_name_url').is(':focus')) 
    { 
     alert("hii"); 
     $("#submit_replace_button").click(); 
    } 
    else if(e.keyCode === 13 && $('#search_domain').is(':focus')) 
    { 
     //$("#submit_search_button").click(); 
    } 
}); 

$(document).ready(function() 
{ 
    $("#domains_list tbody").on("click", "tr", function() 
     { 
      var total_selected_row; 
      var total_row; 
      $(this).toggleClass("selected"); 
      var final_class = $(this).attr("class"); 
      var chk_ob = $(this).find("td:first").find("input"); 

      if (final_class.indexOf("selected")>0) 
      { 
       $(chk_ob).prop('checked', true); 
       total_selected_row = t.rows('.selected').data().length; 
       total_row = t.rows().data().length; 
       if(total_selected_row == total_row) 
       { 
        $("#checkedAll").prop('checked', true); 
       } 
      } 
      else 
      { 
       $(chk_ob).prop('checked', false); 
       $("#checkedAll").prop('checked', false); 
      } 
     }); 

    /* If I comment the below on focus methods, then the total scripts work with keyup method on form. 
     If I uncomment the below focus methods, then keyup method on form doesn't work, instead it works on `$(document).bind();` 
    /* 

    $('#domain_name_url').on('focus',function() 
    { 
     $('#submit_search_button').prop("disabled",true); 
     $('#submit_replace_button').prop("disabled",false); 
    }); 
    $('#search_domain').on('focus',function() 
    { 
     $('#submit_replace_button').prop("disabled",true); 
     $('#submit_search_button').prop("disabled",false); 
    });*/ 
}); 

, но мне нужно положить эту кнопку отправки, чтобы отключить код.

+1

Проверьте идентификатор формы, а также проверить, как вы добавили тип '=«текст»' для ваших полей ввода формы. Это работает для меня http://jsfiddle.net/rohankumar1524/5fpfsf3q/ –

+0

@RohanKumar, я добавляю весь свой html к вам – Saswat

+0

, кстати, у меня есть две кнопки отправки – Saswat

ответ

0

ОК, я нашел свой ответ на основе @RohanKuman

Мне нужно разместить коды, как это,

$(document).ready(function() 
{ 
    $("#domains_list tbody").on("click", "tr", function() 
     { 
      var total_selected_row; 
      var total_row; 
      $(this).toggleClass("selected"); 
      var final_class = $(this).attr("class"); 
      var chk_ob = $(this).find("td:first").find("input"); 

      if (final_class.indexOf("selected")>0) 
      { 
       $(chk_ob).prop('checked', true); 
       total_selected_row = t.rows('.selected').data().length; 
       total_row = t.rows().data().length; 
       if(total_selected_row == total_row) 
       { 
        $("#checkedAll").prop('checked', true); 
       } 
      } 
      else 
      { 
       $(chk_ob).prop('checked', false); 
       $("#checkedAll").prop('checked', false); 
      } 
     }); 

     /*there are two submit buttons in a single form. 
     When we press enter, the first submit button submits the form as it works 
     as a default submit button . 
     So, we need to place this piece of code to check, which textbox had the focus 
     when the enter was clicked. If its search textbox, then by default action, submit button1 will act, but if its replace textbox, so submit button 2 is being made clicked.*/ 
    $("#m_domain input[type=text]").on('keyup', function(e) 
    { 
     if (e.keyCode === 13 && $('#domain_name_url').is(':focus')) 
     { 
      $("#submit_replace_button").click(); 
     } 
     else if(e.keyCode === 13 && $('#search_domain').is(':focus')) 
     { 

     } 
    }); 
    $('#domain_name_url').on('focus',function() 
    { 
     $('#submit_search_button').prop("disabled",true); 
     $('#submit_replace_button').prop("disabled",false); 
    }); 
    $('#search_domain').on('focus',function() 
    { 
     $('#submit_replace_button').prop("disabled",true); 
     $('#submit_search_button').prop("disabled",false); 
    }); 
}); 

Я был глуп и не получил точку, что

$("#m_domain input[type=text]").on('keyup', function(e){}); 

и

$('#domain_name_url').on('focus',function() 
    { 
     $('#submit_search_button').prop("disabled",true); 
     $('#submit_replace_button').prop("disabled",false); 
    }); 
    $('#search_domain').on('focus',function() 
    { 
     $('#submit_replace_button').prop("disabled",true); 
     $('#submit_search_button').prop("disabled",false); 
    }); 

оба должны находиться под $(document).ready(function(){});

1

Это происходит потому, что ваши 2 строки кода конфликтует

// in the below code you want click event when your domain_name_url 
// is focused which will run immediately after focus event 
if (e.keyCode === 13 && $('#domain_name_url').is(':focus')) 
{ 
    alert("hii"); 
    $("#submit_replace_button").click(); 
} 

И когда вы связываете события фокуса на #domain_name_url будет отключена кнопка. И вы не можете нажать на кнопку инвалидов

$('#domain_name_url').on('focus',function() 
{ 
    $('#submit_search_button').prop("disabled",true); 
    $('#submit_replace_button').prop("disabled",false); 
}); 
+0

ну, это не значит ... когда фокус на #domain_name_url, кнопка #submit_search_button отключена, и кнопка #submit_replace_button включена. и при вводе нажмите с фокусом на #domain_name_url, нажата кнопка #submit_replace_button ... так что никакого конфликта вообще нет – Saswat

 Смежные вопросы

  • Нет связанных вопросов^_^