[英]hide a hidden input value when a submit button is clicked (php/jquery)
好的,我的問題是這樣的:
我有一個要求姓名,姓氏和城市的表格。 用戶單擊“提交”,然后信息顯示在此表中:
<p>You entered the following data:</p>
<form action="1.php" method="post">
<input type="hidden" name="action" value="update">
<input type="hidden" name="city" value="<?php echo $user->get_city(); ?>">
<table>
<tr>
<th>First Name:</th>
<td><?php echo $user->get_fname(); ?></td>
<td><input type="button" id="edit_fname" value="Edit"></td>
<td><input type="text" id="fname" name="fname" size="20"></td>
<td><input type="hidden" id="valf" name="val" value="fname">
<input type="hidden" id="lnf" name="lname" value="<?php echo $user->get_lname(); ?>">
<input type="submit" id="subfn" value="Submit"></td>
</tr>
<tr>
<th>Last Name:</th>
<td><?php echo $user->get_lname(); ?></td>
<td><input type="button" id="edit_lname" value="Edit"></td>
<td><input type="text" id="lname" name="lname" size="20"></td>
<td><input type="hidden" id="vall" name="val" value="lname">
<input type="hidden" id="fnf" name="fname" value="<?php echo $user->get_fname(); ?>">
<input type="submit" id="subln" value="Submit"></td>
</tr>
<tr>
<th align="right">City:</th>
<td><?php echo $user->get_city(); ?></td>
<td> </td>
</tr>
</table>
</form>
因此,當用戶單擊編輯按鈕時,將顯示一個文本框和一個提交按鈕,並且根據它是第一個名稱編輯還是姓氏編輯,我有正確的隱藏值與表單一起發送。 唯一的問題是,無論如何,即使單擊第一個名稱字段的“提交”按鈕,隱藏的輸入“val”也會設置為“lname”。
這是jquery:
$().ready = function() {
$('#fname').hide();
$('#lname').hide();
$('#subfn').hide(); // submit button for first name
$('#subln').hide(); // submit button for last name
$('#valf').hide(); // hidden value for fname so we know to post lname
$('#vall').hide(); // hidden value for lname so we know to post fname
$('#lnf').hide(); // hidden value to post last name when first name edit submit
$('#fnf').hide(); // hidden value to post first name when last name edit submit
$("#edit_fname").click(function() {
$('#fname').show();
$('#subfn').show();
$('#valf').show();
$('#lnf').show();
if ($('#lname').show) { // if last name edit is showing, hide it
$('#lname').hide();
$('#subln').hide();
$('#vall').hide();
$('#fnf').hide();
}
});
$("#edit_lname").click(function() {
$('#lname').show();
$('#subln').show();
$('#vall').show();
$('#fnf').show();
if ($('#fname').show()) { // if first name edit is showing, hide it
$('#fname').hide();
$('#subfn').hide();
$('#valf').hide();
$('#lnf').hide();
}
});
}();
這里是用於點擊“提交”按鈕並將“操作”更改為“更新”的PHP:
case 'update':
$val = $_POST['val'];
if ($val == 'fname') {
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$city = $_POST['city'];
$user = new User($fname, $lname, $city);
break;
}
else if ($val == 'lname') {
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$city = $_POST['city'];
$user = new User($fname, $lname, $city);
break;
}
我測試看看$ val是什么,無論如何它似乎都被卡在'lname'上。 所以,我認為我的jQuery代碼存在問題,或者問題是無論發生了什么,都應該發送姓氏'val'值,這不應該是因為我將ID隱藏起來單擊名字按鈕。
這是幫助我學習OOP的所有實驗。 顯然這根本不是生產代碼。 我目前是我的應用科學學士學位的一年級學生,還有很多年,直到我獲得計算機科學學士學位。 這甚至不是課程的一部分......我只是覺得無聊而且非常喜歡編程。
那么,想想有人可以幫忙嗎? 對不起這么長的帖子!
這就是原因。 請參閱以下兩行代碼
<td><input type="hidden" id="valf" name="val" value="fname">
.....
<td><input type="hidden" id="vall" name="val" value="lname">
它們首先使用值fname定義一個名為val的隱藏字段,然后使用值lname。 即使你給他們不同的ID,他們的名字仍然是相同的。 你的jquery代碼中沒有任何地方你改變val的值,這就是為什么它始終保持lname 。
你必須根據你的邏輯改變那個值。 您可以使用以下jQuery選擇器
$("input[type='hidden'][name='val']")
編輯
所以不要這樣
$('#valf').show();
你可以寫
$("input[type='hidden'][name='val']").val("fname");
而不是這個
$('#vall').show();
你可以寫
$("input[type='hidden'][name='val']").val("lname");
您有兩個不同的字段,其name="val"
在同一表單中。 PHP按順序讀取其中的每一個,第二個值blobbers(覆蓋)第一個,只留下$_GET
數組元素中的最后一個值。
您可以通過在其末尾指定帶有[]
的變量名稱,以相同的名稱提交多個值。 這告訴PHP它是一個數組元素,就像你使用$array[] = "new element";
在您的常規代碼中添加元素到數組。
即使使用數組語法也無法幫助您,因為每次提交表單時都會將這兩個值傳遞給服務器。 如果您只想提交一個部分或另一個部分,那么它們需要是單獨的表格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.