2011-07-24 56 views
1

我想從表單向JavaScript傳遞一個動態創建的ID。從PHP傳遞一個變量形式的id到javascript

<script type="text/javascript"> 
$(function() { 
    $(".button-call").click(function() { 
    var fld = "<?= $div_id;?>"; 
    var test = $(fld).val(); 
     alert(test); 
... 

<form method="post" action="" enctype="multipart/form-data"> 
<input type="text" class="tb" name="<?php echo $div_id; ?>" id="<?php echo $div_id; ?>" value="" maxlength="80" /> 
<input type="submit" value="Send" class="button-call" name="p_k2" id="p_k2" /> 
</form> 

alert(test)顯示:undefined。

當我改變它提醒(FLD)我得到兩個警報,首先它顯示一個空框,然後正確$ div_id

我在做什麼錯?

編輯1:我想顯示從輸入文本...

編輯2:這是一個完整的JavaScript:

<script type="text/javascript"> 
$(function() { 
    $(".button-call").click(function() { 
    //var fld = "<?= $div_id;?>"; 
    var fld = "input[name=<?=$div_id;?>]"; 
    //var fld = "#<?=$div_id;?>"; 
    var test = $(fld).val(); 
    var dataString = 'content='+ test; 

    alert(fld); 
    alert(test); 

    if(test=='') 
    { 
     alert("Write some text ..."); 
    } 
    else 
    { 
     $("#flash").show(); 
     $("#flash").fadeIn(1000).html('<img src="images/ajax-loader.gif" align="absmiddle"> <span class="loading"> Loading ...</span>'); 

     $.ajax({ 
     type: "POST", 
     url: "p_k2.php", 
     data: dataString, 
     cache: false, 
     success: function(html){ 
     $("#divToRefresh").after(html); 
     document.getElementById(fld).value=''; 
     document.getElementById(fld).focus(); 
     $("#flash").fadeOut(1000); 
     } 
     }); 
    } 
    return false; 
    }); 
}); 
</script> 

編輯3:這是我的例子m使用:http://www.9lessons.info/2009/05/insert-and-load-record-using-jquery-and.html 一切工作正常,如果我使用固定的ID。但無法使用動態創建的ID進行操作。

編輯4: 好吧,有很多答案,但他們似乎沒有工作。我會盡量簡化。

我會回到這個例子,我開始的這個例子(http://www.9lessons.info/2009/05/insert-and-load-record-using-jquery-and.html)。

我的網站與Facebook類似。你有朋友,並且在你的「牆上」頁面上有許多不同的評論框(針對你的每個朋友)。 要使這些評論框的ID不同(爲了避免向所有朋友發佈內容),我必須使用數據庫中的朋友ID(input type="text" class="tb" name="<?php echo $div_id; ?>" id="<?php echo $div_id; ?>" value="")。那部分工作正常。

我可以得到該id到JavaScript(var fld = "input[name=<?=$div_id;?>]";),但我無法讀取該文本字段的值。一旦我這樣做,我會好好照顧那個插入到我的數據庫中...

+0

看看我的答案,它應該工作 – genesis

回答

1

嘗試

var fld = "input[name=<?=$div_id;?>]"; 

或更好

var fld = "#<?=$div_id;?>"; 
+0

第一個選項再次顯示兩個警報。第一個:input [name =],第二個:input [name = correct_div_id] ...第二個不顯示任何內容,螢火蟲顯示:uncaught exception:語法錯誤,無法識別的表達式:# – Alex

+0

'$ div_id'包含什麼? 'alert($(「input [name ='some_name']」)。val());'應該可以工作 – rabudde

+0

它包含來自mysql數據庫的id。我有評論框,類似於Facebook。在一個頁面上有很多評論框,這就是爲什麼我必須放置一個動態創建的ID。它確實顯示了第二次警報上的文本框的正確值! – Alex

1
var test = $("#"+fld).val(); 
alert(test); 
+0

肯定,但正如你所看到的,他希望從輸入字段獲取內容到變量'test' – rabudde

+0

現在就試試吧。它應該工作 – genesis

+0

與我的解決方案有什麼不同? – rabudde

1

可以使用$(本)在點擊事件處理程序中。

$(".elementClass").click(function(){ 
    alert($(this).attr("id")); 
}); 

將返回被點擊的.elementClass的ID。

+0

這有助於一點,如果將按鈕ID更改爲我的變量ID ...$(function。(){(「。button-call」)。click(function(){ var fld = $(this).attr(「id」); var test = $(「#」+ fld ).val(); alert(test); – Alex