#jquery #html
#jquery #HTML
Вопрос:
Я написал этот код, в котором я загружаю некоторые данные через AJAX, когда пользователь изменил элемент select. Я хочу показать какой-то простой текст или данные, если пользователь еще не изменил элемент select. Как мне это сделать?
Я пробовал кучу вещей, таких как, например, проверка значения элемента select, соответствует ли значение некоторому шаблону и т. Д., Но ни один из них, похоже, не работает.
Любая помощь приветствуется!
<script type="text/javascript" >
jQuery(document).ready(function($) {
//Spin.js options
var opts = {
lines: 7, // The number of lines to draw
length: 6, // The length of each line
width: 2, // The line thickness
radius: 6, // The radius of the inner circle
rotate: 0, // The rotation offset
color: '#000', // #rgb or #rrggbb
speed: 0.6, // Rounds per second
trail: 32, // Afterglow percentage
shadow: false, // Whether to render a shadow
hwaccel: false, // Whether to use hardware acceleration
className: 'rdc-load-spinner', // The CSS class to assign to the spinner
zIndex: 2e9, // The z-index (defaults to 2000000000)
top: '82px', // Top position relative to parent in px
left: '120px' // Left position relative to parent in px
};
//Other variables
$result = $("#rdc-result");
$select = $("#rdc-show-user-coupons");
//On change
$select.change(function() {
$result.hide();
//Current value of the select element
var companyID = $(this).val();
if( companyID !== '' ) {
//AJAX Query variables
var data = {
'action': 'rdc_call',
'company_id': companyID
};
//AJAX Post
$.post(ajaxurl, data, function(response) {
//Variables
var target, spinner, table;
//Table begin
table = '<table class="form-table fl-left" style="width:50%;">';
table = '<tbody>';
$.each(response, function(i, obj) {
if(i%2) {
table = '<tr><td style="font-weight: bold; width: 80px;">#' obj.id '</td><td style="width: 100px;">' obj.user_login '</td><td style="width: 100px;">' obj.coupon '</td><td>26.06.2014 - 10.10.2014</td></tr>';
} else {
table = '<tr class="odd"><td style="font-weight: bold; width: 80px;">#' obj.id '</td><td style="width: 100px;">' obj.user_login '</td><td style="width: 100px;">' obj.coupon '</td><td>26.06.2014 - 10.10.2014</td></tr>';
}
});
table = '</tbody>';
table = '</table>';
table = '<div class="fl-right" style="width:50%;">';
table = '<textarea style="margin: 10px; width: 97%; height: 300px;">';
$.each(response, function(k, text) {
table = text.user_login ', ' text.coupon 'n';
});
table = '</textarea>';
table = '</div>'
//Spin.js init and data load
$(function() {
target = $('#rdc-loader').get(0);
spinner = new Spinner(opts);
spinner.spin(target);
setTimeout(function() {
spinner.stop();
$result.hide().html(table).fadeIn('slow');
}, 800);
});
}, "json");
} else {
// No user
var table;
table = 'Du skal vælge en virksomhed fra dropdown-menuen til højre.';
$result.hide().html(table).fadeIn('slow');;
}
});
});
</script>
Комментарии:
1. Было бы полезно просмотреть ваш существующий код.
2. Вы должны предоставить соответствующий код, прежде чем все проголосуют против вашего вопроса.
3. Извините — теперь добавлен. Банкомат. он ничего не отображает, пока я не изменю элемент выбора.
Ответ №1:
Событие изменения отсутствует для всех браузеров, проверьте это: http://www.quirksmode.org/dom/events/change.html
Если вы нацелены на браузер, который не поддерживает этот тип события, используйте таймер или интервал
Вот пример: http://jsbin.com/zukori/1/edit
var $select = $('#select');
var initialValue = $select.val();
var changed = false;
var check = function(){
if (!changed){
if (initialValue !== $select.val()){
changed = true;
$('#tip').hide();
} else {
setTimeout( check, 400);
}
}
};
check();
Комментарии:
1. Отлично работает, спасибо — очень признателен 🙂 и последнее, каждый раз, когда я делаю AJAX-запрос, браузер также выдает «undefined», но я не могу понять, что он не может определить, все данные отображаются просто отлично.
2. Отладка кода … возможно, что в глубокой ветви ваших данных / ответа значение не определено, обычно в сообщении об ошибке выводится скрипт и строка, в которой произошла ошибка, я не могу сказать без всех подробностей. Отправьте еще один вопрос, если вы не понимаете, приложите также данные / ответ.
3. Я отлаживаю, никаких неопределенных значений, но я буду продолжать пытаться, еще раз спасибо 🙂