2011-12-21 2 views
1

У меня есть диалоговое окно JQuery с элементом управления внутри содержащего текстовое поле, у меня также есть кнопка ok внутри. В окном ОК я получаю значение из текстового поля и передаю его функции.Получение старого значения из текстового поля в диалоговом окне

Проблема:

Everytime изменить значение в текстовом поле он только получает старое значение,

так, если оригинальное значение 3, я изменить его на 20, я нажимаю кнопку, он получает значение 3.

У кого-нибудь есть идеи, почему он это делает?

спасибо!

здесь некоторый код:

Jquery:

$("#addtxt").click(function (e) { 
    $("#dialog").show('slide'); 
    $("#dialog").html('<input id="my_txttext" name="my_txttext" title="Manoj" type="text" label="Add Text" />'); 
    $("#dialog").dialog({ 
     resizable: false, 
     modal: true, 
     position: { 
      my: 'center', 
      at: 'center', 
      // collision: 'fit', 
      // ensure that the titlebar is never outside the document 
      using: function (pos) { 
       var topOffset = $(this).css(pos).offset().top; 
       if (topOffset < 0) { 
        $(this).css('top', pos.top - topOffset); 
       } 
      } 
     }, 
     width: 300, 
     CloseText: '', 
     title: 'Add Text', 
     buttons: { 
      'OK': function() { 
       //to create dynamic div to contain data 
       var div = document.createElement('div'); 
       $(div).attr("id", "dyndiv" + count); 
       objid = "dyndiv" + count; 
       count++; 
       $('#sel_obj_text').val("Text"); 
       text_visibility(); 

       var $ctrl = $(div).text($('#my_txttext').get(0).value).addClass("draggable ui-widget-content HandleTopRowBorder").draggable({ 
        containment: '#containment-wrapper', 
        cursor: 'move', 
        snap: '#containment-wrapper' 
       }); 

       $("#containment-wrapper").append($ctrl); 
       $('#' + objid).position({ 
        of: $("#containment-wrapper"), 
        my: "center" + " " + "center", 
        at: "center" + " " + "center" 
       }); 
       // $('#my_txttext').val('') 
       $(this).dialog("destroy"); 

      }, 
      'Cancel': function() { 
       $(this).dialog("destroy"); 
       // I'm sorry, I changed my mind     
      } 
     } 

    }); 
+0

Я не уверен здесь, так как мой JQuery-фу не удивительно, но я не после, почему вы звоните get (0) ... если вы хотите, чтобы значение my_txttext не могло быть просто '$ ('# my_txttext) .val'? – DaOgre

+0

Фактически раньше я использовал $ ('# my_txttext) .val(), но у него также была та же проблема –

+0

Когда вы говорите: «Каждый раз, когда я изменяю значение в текстовом поле», вы имеете в виду, что вы открываете диалоговое окно несколько раз и изменить значение? – jessegavin

ответ

1
$("#addtxt").click(function (e) { 
    var $input = $('<input title="Manoj" type="text" placeholder="Add Text" />'); 
    $("#dialog") 
    .empty() 
    .append($input) 
    .show('slide') 
    .dialog({ 
     resizable: false, 
     modal: true, 
     position: { 
      my: 'center', 
      at: 'center', 
      // collision: 'fit', 
      // ensure that the titlebar is never outside the document 
      using: function (pos) { 
       var topOffset = $(this).css(pos).offset().top; 
       if (topOffset < 0) { 
        $(this).css('top', pos.top - topOffset); 
       } 
      } 
     }, 
     width: 300, 
     CloseText: '', 
     title: 'Add Text', 
     buttons: { 
      'OK': function() { 

       $('#sel_obj_text').val("Text"); 
       text_visibility(); 

       $("<div>", { 'id' : "dyndiv" + count }) 
       .text($input.val()) 
       .addClass("draggable ui-widget-content HandleTopRowBorder") 
       .draggable({ 
        containment: '#containment-wrapper', 
        cursor: 'move', 
        snap: '#containment-wrapper' 
       }) 
       .appendTo("#containment-wrapper") 
       .position({ 
        of: $("#containment-wrapper"), 
        my: "center" + " " + "center", 
        at: "center" + " " + "center" 
       }); 

       $(this).dialog("destroy"); 

       count++; 
      }, 
      'Cancel': function() { 
       $(this).dialog("destroy"); 
      } 
     } 

    }); 
+0

Большое спасибо. Что случилось с моим кодом. Думаю, добавление контроля непосредственно в диалог. –

+0

Моя теория заключается в том, что в DOM добавлялось несколько элементов '', и когда вы вызывали '$ ('# my_txttext'). Get (0) .value', что jQuery возвращался только значение первого. – jessegavin

+0

Однако .. Я попытался создать демоверсию, чтобы воспроизвести это поведение безрезультатно. Поэтому я не думаю, что могу точно сказать, почему мое решение работает. Но я рад, что это так. – jessegavin

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