#javascript #jquery
#javascript #jquery
Вопрос:
Есть другое решение для отображения скрытого ввода, когда пользователь выбирает опцию из select
тега? Я хочу поместить HTML-код за пределы JS-кода.
код jQuery:
$(function() {
var message = new Array(),
$paymentOption = $("#payement_option"),
$messageDisplay = $("#message_display");
message[1] = '<input type="text" name="email" size="30" />';
$paymentOption.change(function() {
var messageIndex = $(this).val();
$messageDisplay.empty();
if (messageIndex > 0)
$messageDisplay.append(message[messageIndex]);
});
});
HTML-код, подобный этому:
<select name="option"><option value="0">yes</option><option value="1">no</option</select>
результат:
<div id="message_display"></div>
Редактировать:
Я хочу что-то вроде:
<div id="message_display">
<input type="text" name="email" size="30" />
</div>
Комментарии:
1. Я хочу поместить HTML-код (скрытый ввод) вне JS-кода.
2. Мне чрезвычайно любопытно, что это значит. И, кроме того, почему?
3. Потому что я добавил много скрытых полей, и я хочу контролировать и редактировать их вне JS-кода
4. «Снаружи»? Что это значит? Вы имеете в виду, что хотите сделать
message_display
div видимым? Или вы хотите добавить к нему контент?5. Я хочу написать HTML-код и установить для него значение (hidden или display: none) И он будет показан, как только я выберу значение из тега select
Ответ №1:
Я, как и другие, немного сбит с толку, но, насколько я понимаю вашу проблему, у вас есть в основном рабочий код.
Вам нужно установить идентификатор выбора в payment_option и поместить сообщение display div на страницу. в противном случае он не может найти то, к чему ему нужно добавить значение.
измените его на этот: HTML
<select name="option" id="payement_option">
<option value="0">yes</option>
<option value="1">no</option>
</select>
<div id="message_display"></div>
JQUERY
$(function () {
var message = new Array();
//set message[0] = 'stuff' if you want something to display when yes is selected
message[1] = '<input type="text" name="email" size="30" />';
$("#payement_option").change(function () {
//gets the message index
var message_index = $("#payement_option").val();
//emptys the value from message display
$("#message_display").empty();
//if option is not YES display message[val]
if (message_index > 0) {
$("#message_display").append(message[message_index]);
}
});
});
и живой пример: http://jsfiddle.net/mCqfq /
Редактировать:
вы имеете в виду вот так? http://jsfiddle.net/dEwcK /
HTML:
<select name="option" id="payement_option">
<option value="0">yes</option>
<option value="1">no</option>
</select>
<div id="message_display"><input type="text" name="email" size="30" id="hiddenInput" /></div>
CSS:
#message_display {display: none;}
JQUERY:
$(function () {
$("#payement_option").change(function () {
var message_index = $("#payement_option").val();
if (message_index > 0) {
$("#message_display").show();
}
else { $("#message_display").hide(); }
});
});
Комментарии:
1. ДА, да, но, пожалуйста, посмотрите мою правку в исходном сообщении. Чтобы понять, чего я хочу
2. итак, вы хотите, чтобы сообщение [1] = <тип ввода = «текст» имя = «электронная почта» размер = «30» /> находилось вне js?
3. просто HTML-код:
<input type="text" name="email" size="30" />
4. итак, поместите html в html, скройте его с помощью CSS и установите для сообщения [1] значение hiddeninput примерно так: message[1] = $(‘.HiddenInput’)
5. @MiniNaimm, я рад, что тебе это нравится. Не забудьте принять решения и проголосовать за них =)
Ответ №2:
Я думаю, вы имеете в виду, что хотите сделать message_display
div видимым…
$("#message_display").show();
или отредактируйте CSS более конкретно:
$("#message_display").css("display", "block");
Я бы рекомендовал просмотреть jQuery API — это хорошее чтение, и оно показывает вам, как много можно сделать и насколько легко:http://api.jquery.com
Комментарии:
1. Теперь, если я хочу отредактировать или добавить что-то к скрытому вводу, я должен вернуться к JS-коду и сделать это… Но я хочу установить свой скрытый ввод вне js-кода, это возможно?
2. Боюсь, все эти разговоры о «внутри» и «снаружи» JS-кода очень странные. Если вы хотите изменить разметку веб-страницы, вам необходимо использовать Javascript. Вы можете изменить содержимое данного тега следующим образом:
$("#tag_id").html("new content");
или вы можете использоватьappend()
, как вы сделали выше, но это не приведет к удалению текущего содержимого, это просто добавит новое содержимое в конец тега.3. Да, просто используйте код, который у вас есть, и добавьте
$("#message_display").show();
после вашегоif
утверждения. Это не очень аккуратный код, но он может сработать, если его немного доработать.
Ответ №3:
Вы пытаетесь сделать что-то подобное?
$('#myselect').change(function(){
var box = $(this);
if (box.val() === 'some predetermined value') {
$("#message_display").show();
}
});