#jquery #jquery-ui
#jquery #jquery-ui
Вопрос:
- Поэтому я пытаюсь получить входное значение #title при отправке
- Но это всегда будет «» при использовании события отправки
- Я попытался использовать событие keyup для его тестирования
- Но это работает нормально…
- Вот мой код
<div id="dialog-form" title="Create new task">
<form autocomplete="off" class="taskform">
<input type="text" id="title" placeholder="Add title">
<textarea placeholder="Details" id="details" rows="5" cols="40"></textarea>
<!-- User need to press enter to submit -->
<input type="submit" tabindex="-1" style="position:absolute; top:-1000px">
<script>
$(document).ready(function() {
$('#title').keyup(function() {
$('#details').val($('#title').val());
});
$('#dialog-form').submit(function(e) {
e.preventDefault();
console.log($('#title').val());
});
});
</script>
</form>
</div>
Пользовательский интерфейс Jquery
dialog = $("#dialog-form").dialog({
autoOpen: false,
height: 370,
width: 370,
resizable: false,
draggable: false,
modal: true,
buttons: {
"Add task": addTask,
Cancel: function() {
dialog.dialog("close");
}
},
close: function() {
form[0].reset();
}
});
form = dialog.find("form").on("submit", function() {
addTask();
});
Комментарии:
1. Мне не ясно, в чем проблема. Что вы пытаетесь сделать со значением, которое не работает?
2. Добро пожаловать в Stack Overflow. Диалоговое окно пользовательского интерфейса jQuery — это DIV в вашем HTML. Возможно, было бы лучше переместить весь ваш скрипт в один блок кода вместо того, чтобы загружать его в разных местах.
3. Спасибо за ваше рассмотрение, я впервые задаю вопрос о переполнении стека. Я все еще не знаю, как мне сформулировать свой вопрос. Поэтому я прошу прощения за свою ошибку, если что-то не ясно.
Ответ №1:
Рассмотрим следующий пример.
$(function() {
var dialog;
function dlgReset(cnt) {
console.log("Form Reset");
$("form", cnt).get(0).reset();
}
function addTask() {
var t = $(".title", dialog).val(),
d = $(".details", dialog).val();
if (t == "") {
console.log("Error: No Title");
return false;
}
console.log("Add Task: '" t "', Details:", d);
dlgReset(dialog);
console.log("Close Dialog");
dialog.dialog("close");
return true;
}
dialog = $("#dialog-form").dialog({
autoOpen: false,
height: 320,
width: 420,
resizable: false,
draggable: false,
modal: true,
buttons: [{
text: "Save Task",
class: "ui-state-default",
tabindex: "3",
click: function() {
console.log("Save Selected");
addTask();
}
},
{
text: "Cancel",
tabindex: "4",
click: function() {
console.log("Cancel Selected");
dlgReset(this);
console.log("Close Dialog");
$(this).dialog("close");
}
}
]
});
$("form", dialog).submit(function(e) {
e.preventDefault();
console.log("Form Submit | Save Selected");
addTask();
});
$(".open").click(function() {
console.log("Open Dialog")
dialog.dialog("open");
});
});
em {
color: red;
}
.ui-dialog .task {
margin-top: 10px;
}
.ui-dialog button.ui-state-default {
font-weight: bold;
}
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<button class="open">Add Task</button>
<div id="dialog-form" title="Create New Task">
<form>
<input type="text" class="task title" tabindex="1" placeholder="Add Title" /> <span><em>*</em> Required</span>
<textarea placeholder="Add Details" tabindex="2" class="task details" rows="5" cols="40"></textarea>
</form>
</div>
Это позволяет нам собирать данные из формы и сбрасывать форму. Это произойдет при нажатии Save Task
кнопки или Enter клавиши. Cancel
просто сбросит форму.
Комментарии:
1. Спасибо, это очень полезно.