我有一個表格,上面寫著“這個案例有 IR 號碼嗎?”
如果是,請顯示欄位。如果不是,隱藏并顯示給其他人。
我在用
validate()功能。old()在表單提交失敗后保留資料,也就是validate()錯誤訊息。- JQuery 顯示/隱藏欄位。
對于無線電輸入,我old()是這樣使用的:
<input class="btn-check" type="radio" name="checkIR" value="haveIR" @if(!old('checkIR')) checked @endif id="haveIR" required>
<input class="btn-check" type="radio" name="checkIR" value="noIR" @if(old('checkIR')) checked @endif id="noIR">
在失敗后保持checked原樣validate(),但它有問題,當我檢查“是”并重繪 時,它會在必須為“是”時檢查“否”。
至于顯示/隱藏,這是我所做的:
// Show/Hide fields based on radio button option
$(document).ready(function() {
$('input[name="checkIR"]').click(function() {
var inputValue = $(this).attr("value")
var targetField = $("." inputValue);
$(".box").not(targetField).slideUp();
$(targetField).slideDown();
});
});
在 css 的幫助下:
.box {
display: none;
}
代碼是如何作業的:
如果yes/haveIR選中收音機:顯示包含的所有欄位
試圖解決的問題:
- 如何修復/改進輸入中的小錯誤
old()? yes如果用戶選中“是”,即使在 laravel 失敗后如何保持可見的欄位validate()?
uj5u.com熱心網友回復:
由于無線電輸入具有相同的名稱,因此在這兩種情況下,您的會話都有“checkIR”,當您嘗試使用它進行檢查時,old('checkIR')無論其值如何,它都會回傳 true。這就是檢查“否”的原因。
因此,為了找到舊的選擇,您應該檢查它的值,而不是它是否存在于會話中。
像這樣的代碼應該適合你;
<input class="btn-check" type="radio" name="checkIR" value="haveIR" @if(old('checkIR') == 'haveIR') checked @endif id="haveIR" required>
<input class="btn-check" type="radio" name="checkIR" value="noIR" @if(old('checkIR') == 'noIR') checked @endif id="noIR">
要么;
您可以使用 0 和 1 作為值。由于 old('checkIR') 將回傳 '0' 或 '1' 并且 PHP 會將 '0' 解釋為 false 并將 '1' 解釋為 true,因此行為將如您所愿。
并保持相關欄位可見;
您可以在檔案準備好時運行一些腳本并設定輸入值可見的相關欄位。
$(document).ready(function() {
var input = $('input[name="checkIR"]:checked');
if (input) { // if any checked radio when document ready
var targetField = $("." input.val());
$(".box").not(targetField).slideUp();
$(targetField).slideDown();
}
});
注意:沒有運行腳本,它可能有錯誤,但你明白了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/437474.html
標籤:javascript jQuery laravel-8
