2015-04-16 95 views
0

問題我有這個JS,由於某些原因,它不能在IE或Chrome中工作,但它在FF中工作,幫助將是不勝感激。似乎無法弄清楚爲什麼我的JavaScript不工作在IE和Chrome

附註我需要這是一些奇怪的原因點擊功能的變化function--在IE和Chrome,但在這種情況下,我需要的是一個變化,這也是一個RubyRails應用。

這裏是我的代碼..

$(document).ready(function() { 

    $('#emp_id').change(function() { 
     var url = "/user/populate_form?emp_id=" + $(this).val(); 
     $.getJSON(url, function (data) { 
      if (!(data.emp_first_name === undefined)) 
       $('#emp_first_name').val(data.emp_first_name); 
      if (!(data.emp_last_name === undefined)) 
       $('#emp_last_name').val(data.emp_last_name); 
      if ((data.error * 1) == 404) { 
       alert("The employee ID entered was not found!"); 
       } else { 
       window.confirm("Your employee ID was found please fill in the email(optional) and password fields then click the sign in button to register."); 
       } 
      }); 
     }); 
    }); 

我也試過這仍然沒有在IE &使用的Chrome

$(document).ready(function() { 

    $('#emp_id').on('change', function() { 
     var url = "/user/populate_form?emp_id=" + $(this).val(); 
     $.getJSON(url, function (data) { 
      if (!(data.emp_first_name === undefined)) 
       $('#emp_first_name').val(data.emp_first_name); 
      if (!(data.emp_last_name === undefined)) 
       $('#emp_last_name').val(data.emp_last_name); 
      if ((data.error * 1) == 404) { 
       alert("The employee ID entered was not found!"); 
       } else { 
       window.confirm("Your employee ID was found please fill in the email(optional) and password fields then click the sign in button to register."); 
       } 
      }); 
     }); 
    }); 

想這也仍然在IE和Chrome

沒有工作
$(document).ready(function() { 

    $('#emp_id').keyup('onchange', function() { 
     var url = "/user/populate_form?emp_id=" + $(this).val(); 
     $.getJSON(url, function (data) { 
      if (!(data.emp_first_name === undefined)) 
       $('#emp_first_name').val(data.emp_first_name); 
      if (!(data.emp_last_name === undefined)) 
       $('#emp_last_name').val(data.emp_last_name); 
      if ((data.error * 1) == 404) { 
       alert("The employee ID entered was not found!"); 
       } else { 
       window.confirm("Your employee ID was found please fill in the email(optional) and password fields then click the sign in button to register."); 
       } 
      }); 
     }); 
    }); 

這是我的看法代碼

<div class='row form-group'> 
     <div class='col-xs-8 col-xs-offset-2 col-sm-6 col-sm-offset-3 col-md-4 col-md-offset-4 col-lg-2 col-lg-offset-5 text-right'> 
     <%= f.text_field :emp_id, tabindex: 1, id: 'emp_id', autofocus: true, placeholder: t('login_label'), class: 'form-control' %> 
     </div> 
    </div> 

    <div class='row form-group'> 
     <div class='col-xs-8 col-xs-offset-2 col-sm-6 col-sm-offset-3 col-md-4 col-md-offset-4 col-lg-2 col-lg-offset-5 text-right'> 
     <%= f.text_field :emp_first_name, tabindex: 1, id: 'emp_first_name', autofocus: true, placeholder: t('login_label'), class: 'form-control' %> 
     </div> 
    </div> 

    <div class='row form-group'> 
     <div class='col-xs-8 col-xs-offset-2 col-sm-6 col-sm-offset-3 col-md-4 col-md-offset-4 col-lg-2 col-lg-offset-5 text-right'> 
     <%= f.text_field :emp_last_name, tabindex: 1, id: 'emp_last_name', autofocus: true, placeholder: t('login_label'), class: 'form-control' %> 
     </div> 
    </div> 
+0

什麼是不正確的工作?更改事件是否被觸發? Ajax調用是否正在進行?處理Ajax調用是否存在錯誤(又名https://api.jquery.com/ajaxError/)您將需要調試此操作。 – epascarello

+0

該警報是一個自定義警報,我只是使用確認,因爲我是懶惰,並希望創建分開警報框大聲笑。 @ epascarello – Snowman1234

+0

它似乎是改變功能不工作,因爲當我改變它點擊它的作品和AJAX的作品,所以我很確定它與改變功能有關。 @epascarello – Snowman1234

回答

0

jQuery的更改事件僅觸發,當輸入字段失去焦點。

編輯:

$(文件)。就緒(函數(){

$('#emp_id').change(function() { 
    var url = "/user/populate_form?emp_id=" + $(this).val(); 

    $.getJSON(url, function (data) { 
     data = JSON.parse(data); 

     if (data.emp_first_name !== undefined) { 
      $('#emp_first_name').val(data.emp_first_name); 
     } 

     if (data.emp_last_name !== undefined) { 
      $('#emp_last_name').val(data.emp_last_name); 
     } 

     if (parseInt(data.error) === 404) { 
      alert("The employee ID entered was not found!"); 
     } else { 
      window.confirm("Your employee ID was found please fill in the email(optional) and password fields then click the sign in button to register."); 
     } 
    }); 
}); 

編輯#2:我認爲,有在我的示例代碼中的語法錯誤......

+0

這因爲一旦用戶點擊了另一盒是正確的還是打標籤它的工作原理,但它僅與FF @marcel – Snowman1234

+0

變化工作「什麼是不正確的工作?是否觸發了更改事件?是否創建了Ajax調用?「 - epascarello – marcel

+0

你可以使用瀏覽器的調試模式找出問題所在......或者添加一些放置好的console.logs ... – marcel

0

這應該爲你工作:

$(document).ready(function() { 
    $('#emp_id').keyup(function() { 
    var url = "/user/populate_form?emp_id=" + $(this).val(); 
    $.getJSON(url, function (data) { 
     if (typeof(data.emp_first_name) !== 'undefined') 
     $('#emp_first_name').val(data.emp_first_name); 

     if (typedof(data.emp_last_name) !== 'undefined') 
     $('#emp_last_name').val(data.emp_last_name); 

     if (parseInt(data.error) == 404) { 
     alert("The employee ID entered was not found!"); 
     } 
     else { 
     window.confirm("Your employee ID was found please fill in the email(optional) and password fields then click the sign in button to register."); 
     } 
    }); 
    }); 
}); 
+0

這工作在IE瀏覽器和FF,但它只允許我鍵入一個字母然後它就解僱了Ajax。有沒有辦法改變? – Snowman1234

+0

@雪人1234:我以爲那就是你要去的地方。你幾乎必須這樣做(每個字符),使用'change'(焦點必須離開輸入),或者你可以用定時器做一些更奇特的事情,這會讓你在發起AJAX請求之前等待用戶暫停。 – jbeck

0

好吧,我想通了......所有我需要做的就是改變這個$(「#EMP_ID」)改變(函數()。 {to this $('#emp_id')。blur(function(){a

相關問題