Использование результата запроса javascript в качестве ввода для формы HTML
Можно ли напрямую использовать результат функции Javascript в качестве входного значения для формы HTML?
<form class="my-form" action="fileUpload.php" method="POST" enctype="multipart/form-data">
<input type="hidden" name="User_id" value="getValue();">
<input type="submit" value="Submit"/>
</form>
Это явно не правильно, но я надеюсь, что это говорит о том, что я пытаюсь сделать. Я хотел бы получить возвращаемый результат JS function getValue(); действовать как входное значение.
2 ответа
В этой реализации нет возможности приравнять value
атрибут внутри input
тег для функции JavaScript.
Согласно w3.org, атрибут value может быть равен
Строка без разрывов строки
Любая строка, которая не содержит символов перевода строки (U+000A, "LF") или возврата каретки (U+000D, "CR").
Я не уверен, что внутри getValue()
функция, но вы можете вызвать обработчик события щелчка при нажатии кнопки отправки и запустить getValue()
функция.
Ex.
<form class="my-form" action="fileUpload.php" method="POST" enctype="multipart/form-data">
<input type="hidden" name="User_id">
<input type="submit" value="Submit" onclick="getValue();"/>
</form>
Надеюсь, это хорошо для тебя.
Хотя технически возможно сделать что-то вроде этого:
<script>
function getValue(){ return "foo"; }
document.write("<input type='hidden' name='User_id' value='" + getValue() + "' />");
</script>
Это, как правило, вызывает недовольство, поскольку существуют проблемы с областями видимости и последствия для отображения страниц. Более приемлемым способом было бы сделать что-то более подобное..
function getValue(){ return "bar"; }
window.addEventListener("load", function(event){
document.querySelector("input[name='User_id']").value = getValue();
});
или, возможно, при отправке формы или нажатии кнопки отправки что-то вроде:
function getValue(){ return "bar"; }
document.querySelector("input[type='submit']").addEventListener("click", function(){
document.querySelector("input[name='User_id']").value = getValue();
});
Хотя я сам не заинтересован в этом, было бы возможно сделать то же самое, что и выше:
<input type="submit" value="Submit" onclick="setUserId();"/>
Затем, скажем, конец блока сценария body:
function getValue(){ return "bar"; }
function setUserId(){
document.querySelector("input[name='User_id']").value = getValue();
}