2015-09-16 104 views
0

我使用MySQL和ajax從表中獲取特定信息,然後將其中一個值傳遞給單選按鈕。Jquery - 將輸入值傳遞給單選按鈕

用戶輸入他們的ID號,它會自動從MySQL表中添加全名,電子郵件地址和管理器。

然後我將管理器值傳遞給一個單選按鈕,但它不工作,除非我實際上單擊管理器輸入字段。

我嘗試過,模糊,改變,鍵入,focusin/out,但它仍然沒有傳遞的值,直到我實際上點擊輸入字段。

請注意 - 它工作正常,如果我手動添加一個值到經理的領域。

任何想法?

<input type="text" name="id" id="id" value="" > 
<input type="text" class="hidden" name="name" id="name" value="" > 
<input type="text" class="hidden" name="email" id="email" value="" > 
<input type="text" class="hidden" name="manager" id="manager" value="" > 

<input type="radio" name="defaultmanager" id="defaultmanager" value=""> 
<label for="defaultmanager" id="defmanager" >Default manager:</label> 

<input type="radio" name="reason" id="otherreason" value="">Other 
<input type="text" name="otherreason" /> 

<script> 
$('#manager').bind("change paste keyup", function() { 
var val = $(this).val(); 
$('#defmanager').text('Default Manager:' + val); 
}); 
</script> 

它再次正常工作,但我必須實際點擊輸入字段才能將值傳遞給單選按鈕。

下面是自動添加的姓名,電子郵件和經理代碼:

$(function() { 
    $("#id").on('blur' , function() { 
     $('#table1 tr').removeClass("hidden"); 
     // getting the value that user typed 
     searchString=$(this).val(); 

     // forming the queryString 
     var data = 'telefoon='+searchString; 

     // if searchString is not empty 
     if(searchString) { 
      // ajax call 

      $.ajax({ 
       type: "POST", 
       url: "query2.php", 
       data: data, 

       success: function(html){ // this happens after we get results 
        result = String(html).split("|"); 

        $("#name").val(result[0]); 
        $("#email").val(result[1]); 
        $("#manager").val(result[4]); 
       } 
      });  
     } 
     return false; 
    }); 
}); 

+1

只有在發生'paste','change'或'keyup'時纔會執行該函數。 – Lauromine

+0

我無法看到任何代碼爲什麼實際設置收音機?有沒有代碼丟失? – BenG

+0

我把你的確切代碼放入一個JSFiddle(http://jsfiddle.net/xh40mxye/)中,它似乎更新了你綁定的所有三個事件上的標籤('paste','change','keyup') )。什麼是問題? –

回答

0

當您以編程方式改變經理字段的值,你需要觸發更改事件:

$("#manager").val(result[4]).change(); 

完整,工作示例是在這裏:

$('#manager').bind("change paste keyup", function() { 
 
    var val = $(this).val(); 
 
    $('#defmanager').text('Default Manager:' + val); 
 
}); 
 

 
//Set value of the manager field from the database here 
 
$('#manager').val('Bob Marley').change();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" name="id" id="id" value="" > 
 
<input type="text" name="name" id="name" value="" > 
 
<input type="text" name="email" id="email" value="" > 
 
<input type="text" name="manager" id="manager" value="" > 
 

 
<input type="radio" name="defaultmanager" id="defaultmanager" value=""> 
 
<label for="defaultmanager" id="defmanager" >Default manager:</label> 
 

 
<input type="radio" name="reason" id="otherreason" value="">Other 
 
<input type="text" name="otherreason" />

+0

我試過你的代碼,但它只適用於我點擊經理輸入字段。我也嘗試添加$(「#manager」)。val(result [4]);到一組ajax代碼,但它不工作。 – JCD

+0

@JohnDarville我拿了'$(「#manager」).val(result [4]);'從**你的**代碼。我修改了它來添加'.change()',你可以在代碼片段中看到。 –

0

我想有一百萬的方式做的一切。我不知道我爲什麼不清楚。 :(這是我最後做的:

$(function() { 
$("#id").on('blur' , function() { 
    $('#table1 tr').removeClass("hidden"); 
    // getting the value that user typed 
    searchString=$(this).val(); 

    // forming the queryString 
    var data = 'telefoon='+searchString; 

    // if searchString is not empty 
    if(searchString) { 
     // ajax call 

     $.ajax({ 
      type: "POST", 
      url: "query2.php", 
      data: data, 

      success: function(html){ // this happens after we get results 
       result = String(html).split("|"); 

       $("#name").val(result[0]); 
       $("#email").val(result[1]); 
       $("#manager").val(result[4]); 
       $("#defmanager").val(result[4]); 
      } 
     });  
    } 
    return false; 
}); 

});