2015-12-18 37 views
1

我有一個簡單的表單,只是一個包含來自MySQL數據庫的電子郵件的文本字段。用戶有2個按鈕,用戶可以用他們替換的內容完全更新電子郵件,或者他們可以選擇將電子郵件返回到默認狀態,即原始電子郵件。如果您有兩個按鈕與相關文本字段立即「原位」,則一切正常。但是,如果將「重置」按鈕放在單獨的表格單元格中,「onlick」set-email-back-to-default功能停止工作,並且我不明白如何解決該問題。訪問文本字段的兄弟變量

它會像這樣,因爲復位按鈕是巴掌爆炸旁邊的文本字段:

<input name="cc_email" type="text" value="<?php echo !empty($_SESSION["cc-email"]) ? $_SESSION["cc-email"] : $_SESSION['admin_username'];?>" /> 
<input id="reset-cc" name="add" type="button" value="Set to default" /> 

這裏的JavaScript的:

$(document).ready(function() { 
    $('#reset-cc').click(function() { 
     $(this).siblings('input[name="cc_email"]').val('<?php echo $_SESSION['admin_username'] ?>'); 
     $('#update_cc').submit(); 

     return false; 
    }); 

但是,如果我把復位按鈕在單獨的表格單元格如下功能停止工作,就好像它不能再訪問文本字段:

<td>  
    <input name="cc_email" type="text" value="<?php echo !empty($_SESSION["cc-email"]) ? $_SESSION["cc-email"] : $_SESSION['admin_username'];?>" /> 
</td> 
<td> 
    <input id="reset-cc" name="add" type="button" value="Set to default" /> 
</td> 

我認爲我需要修改JavaScript,以便它仍然可以訪問文本字段,即使它現在由表格單元分隔,但我不知道如何去做。

回答

2

你的問題在於:

$(this).siblings('input[name="cc_email"]') 

通過將輸入按鈕移動到不同的TD上,它不再是兄弟姐妹(正如其他答案已經指出的那樣)。你可能想給按鈕一個ID並參照它:

//this bit | 
    //   v 
<input id="cc_email" name="cc_email" type="text" value="<?php echo !empty($_SESSION["cc-email"]) ? $_SESSION["cc-email"] : $_SESSION['admin_username'];?>" /> 
//... 
$("#cc_email")... 

這將比做出複雜的父母/找到調用更容易。這個按鈕唯一,不是嗎?

+0

完美謝謝你的幫助。 –

+0

不客氣!當你只有某種東西時,ID通常是最好的選擇。其他選擇器和方法可以用來做更復雜的事情,這些事情不能用直接的ID或類來完成。沒有理由使用它們,除非你真的需要*。否則,你最終會得到一個Rube Goldberg jQuery調用。 – Draco18s

0

.siblings()函數搜索同一父代中的同胞集合。如果你把他們放入不同的父母那麼他們不是兄弟姐妹。嘗試的東西代替它像:

$(this).parent().prev().find('input[name="cc_email"]').val('<?php echo $_SESSION['admin_username'] ?>'); 
0

如果輸入總是會在同一tr的按鈕,行中的搜索輸入字段:

$('#reset-cc').click(function() { 
 
    $(this).closest('tr').find('input[name="cc_email"]').val('[email protected]'); 
 
    $('#update_cc').submit(); 
 

 
    return false; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 

 
<table> 
 
    <tr> 
 
    <td> 
 
     <input name="cc_email" type="text" value="[email protected]" /> 
 
    </td> 
 
    <td> 
 
     <input id="reset-cc" name="add" type="button" value="Set to default" /> 
 
    </td> 
 
    </tr> 
 
</table>