[英]How to prevent the default value for an HTML <select> element from changing when the user leaves the screen
[英]How to prevent user from changing the value of a select without using disabled?
我有一個很大的表格,里面有很多字段,包括一些選擇選項。 我想防止用戶在不使用“禁用”的情況下更改選擇選項。 因為禁用不包含POST請求中的字段。
我用javascript嘗試了以下方法:
field.readonly = true;
但是我發現readonly不能與select一起使用,就像它們與文本輸入一樣。 因此,我如何防止用戶更改選擇值。 請記住,我要使用表單發布來發布select的值。
您可以簡單地使用css屬性的pointer-events: none;
在選擇標簽中。 它可以防止在下拉菜單中觸發任何點擊,從而使下拉菜單不起作用,您也可以在表單提交中獲得下拉菜單的值。
.disabledByMe{ pointer-events: none; }
<select name="test" class="disabledByMe"> <option value="volvo">Volvo</option> <option value="saab">Saab</option> <option value="mercedes">Mercedes</option> <option value="audi">Audi</option> </select>
您可以使用preventDefault()
並return false;
從鍵盤和鼠標操作。
<select onkeydown="event.preventDefault(); return false;" onmousedown="event.preventDefault(); return false;">
<option>A</option>
<option>B</option>
</select>
另外,我通常要做的是使我不想禁用的內容,獲取postdata並將它們重新設置為Disabled。
var $disabled = $('#form").find(':disabled');
$disabled.prop('disabled', false);
var postdata = $('#form').serialize();
$disabled.prop('disabled', true);
$.post('/file.php', postdata, function(data) {});
不確定是否要更改<select>
使其一旦更改或以這種方式啟動就無法更改。 我假設前者(僅更改過一次?)但是如果是后者,這是一個簡單的修改,如果您有問題,請告訴我。 該演示執行以下操作:
<select>
。 <select>
值分配給<input type='hidden'>
值。 <input type='hidden'>
分配了[name=
X ]
; X = select.name
或X = select.id
<iframe>
。 key/value
對, ${nameOfSelect/HiddenInput}:{valueOfSelect/HiddenInput}
var M = document.forms.main; var F = M.elements; var FS = F.fieldset0; FS.addEventListener('change', freeze); function freeze(e) { if (e.target.tagName === "SELECT") { var tgt = e.target.id; e.target.disabled = true; var cache = document.querySelector(`input[name=${tgt}]`); cache.value = e.target.value; } }
[type=submit] { display: block; }
<form id='main' action='https://httpbin.org/post' method='post' target='view'> <fieldset id='fieldset0'> <select id='select0' name='select0'> <option default value=""></option> <option value="A">A</option> <option value="B">B</option> <option value="C">C</option> <option value="D">D</option> <option value="E">E</option> </select> <select id='select1' name='select1'> <option default value=""></option> <option value="A">A</option> <option value="B">B</option> <option value="C">C</option> <option value="D">D</option> <option value="E">E</option> </select> <select id='select2' name='select2'> <option default value=""></option> <option value="A">A</option> <option value="B">B</option> <option value="C">C</option> <option value="D">D</option> <option value="E">E</option> </select> </fieldset> <input id='cache0' name='select0' type='hidden'> <input id='cache1' name='select1' type='hidden'> <input id='cache2' name='select2' type='hidden'> <input type='submit'> <iframe name='view'></iframe>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.