2014-12-16 3 views
0

Я создал простой тестовый скрипт, чтобы получить значение текста диапазона и заполнить значение на вход: http://jsfiddle.net/mujaji/8a923n0t/6/Jquery значение входного тумблер/SPAN не работает

$('.panel-body input').val($('.panel-body span').text()); 

$('button').click(function(){ 
    $('.panel-body span, .panel-body input').toggleClass('hidden'); 
    $('.panel-body span').text($('.panel-body input').val()); 
    $(this).children('i').toggleClass('glyphicon-floppy-disk'); 

    if ($(this).children('span').text() == "Check Out") { 
     $(this).children('span').text("Save") 
    } 
    else { 
     $(this).children('span').text("Check Out"); 
    } 
}); 

Это не проблема. Это работает нормально.

... но как только я внедрил его в свою реальную среду, я не получу значения обратно. Там есть очевидные различия между ними, но, похоже, это немного отключение. Я не получаю никаких ошибок, поэтому я предполагаю, что мой синтаксис где-то отсутствует.

Настоящая версия «реального мира». Нажмите кнопку "Проверить", чтобы увидеть его в действии:

http://jsfiddle.net/mujaji/uL1c8owv/

$('.patient-data.stacked li input').val($(this).next('span').text()); 

$('.nav-tools li a').click(function(){ 
var valueToggle = $(this).closest('.panel-heading').next('.panel-body').children('.tab-content').children('.tab-pane.active').find('.patient-data li'); 
valueToggle.children('span, input').toggleClass('hidden'); 
valueToggle.children('span').text(valueToggle.children('input').val()); 

if ($(this).children('span').text() == "Check Out"){ 
    $(this).children('span').text("Save"); 
    $(this).children('i').toggleClass('fa-pencil-square-o fa-floppy-o'); 
} 

else { 
    $(this).children('span').text("Check Out"); 
    $(this).children('i').toggleClass('fa-pencil-square-o fa-floppy-o'); 
} 

});

Может ли кто-нибудь сказать мне, что я делаю неправильно?

+0

ли вы помните 'document.ready' как jsFiddle добавляет, что автомагически для вас! – adeneo

+0

yep, у меня есть –

+0

Я предполагаю, что я указываю на неправильный тег или что-то в этом роде, но я не вижу проблемы –

ответ

0

Adeneo смог ответить на мой вопрос. Часть проблемы заключалась в том, что я не добавлял возврат для первой части кода: $ ('. Panel-body input'). Val(). Кроме того, были небольшие корректировки, сделанные для события click, чтобы переключать дочерние элементы в следующем: .patient-data li.

Вот обновленный код вместе с скрипкой показывая исправление:

$('.patient-data.stacked li input').val(function() { 
    return $(this).next('span').text(); 
}); 

$('.nav-tools li a').click(function(){ 
var valueToggle = $(this).closest('.panel-heading').next('.panel-body').children('.tab-content').children('.tab-pane.active').find('.patient-data li'); 
    valueToggle.children('span, input').toggleClass('hidden').text(function() { 
     return $(this).siblings('input').val(); 
    }); 

    if ($(this).children('span').text() == "Check Out"){ 
     $(this).children('span').text("Save"); 
     $(this).children('i').toggleClass('fa-pencil-square-o fa-floppy-o'); 
    } 

    else { 
     $(this).children('span').text("Check Out"); 
     $(this).children('i').toggleClass('fa-pencil-square-o fa-floppy-o'); 
    } 

}); 

http://jsfiddle.net/uL1c8owv/1/

Смежные вопросы