Проблема с javascript в Oracle Apex

Я использую ниже javascript, чтобы установить значение ячейки в форме tabular.

<script type="text/javascript">
function eventListener(pThis)
{

$('input[name="f04"]').change(function(){

var that = this;
var vRow = "f10_"+pThis.id.substr(pThis.id.indexOf('_')+1);

$.post("wwv_flow.show", 
       {p_request      : "APPLICATION_PROCESS=GET_AMOUNT",
        p_flow_id      : $v("pFlowId"),
        p_flow_step_id : $v("pFlowStepId"),
        p_instance     : $v("pInstance"),
        x01            : $(this).val()
        },
        function(data){ 
              $('input[id="f10_0002"]').val(data);
        },
        "text"
      );
});

}
</script>

Мне нужно использовать значение в var vRow вместо f10_0002 в $('input[id="f10_0002"]').val(data);.

Я пробовал с $('input[id=vRow]').val(data); и $('input[id='"'+vRow+'"']').val(data);

Но не работает. javascript не работает в этих ситуациях. но $('input[id="f10_0002"]').val(data); работает.

как я могу использовать для этого значение var vRow?


person Bishan    schedule 23.01.2013    source источник
comment
Не используйте _1 _... просто используйте $("#" + value)   -  person Ian    schedule 23.01.2013
comment
@lan почему? можешь объяснить причину?   -  person Bishan    schedule 23.01.2013
comment
# эквивалентно сопоставлению элемента по идентификатору. Это его цель при выборе jQuery. Если вы посмотрите на страницу селекторов jQuery (api.jquery.com/category/selectors) , вы увидите, что есть несколько специальных символов, помогающих выбирать элементы. Как я уже сказал, # для идентификатора, . для класса и т. Д. Поэтому вместо того, чтобы jQuery анализировал строку input [id = value] и выполнял много дополнительной обработки, вы можете помочь jQuery сделать это более эффективно, просто используя # . Идентификаторы должны быть уникальными, а метод document.getElementById, который, я уверен, jQuery использует внутренне, лучше   -  person Ian    schedule 23.01.2013
comment
@lan опубликуйте свой комментарий в качестве ответа. я приму это.   -  person Bishan    schedule 23.01.2013


Ответы (2)


Хотя использование селектора input[id=value] технически правильно (из-за селектора атрибутов jQuery), в этом нет необходимости. Основная причина в том, что вы ориентируетесь на элемент по идентификатору. В Javascript есть специальный метод, который работает особенно быстро, и я уверен, что jQuery использует его для внутренних целей (document.getElementById), когда вы указываете, что выбираете по идентификатору. Чтобы инициировать выбор элемента по идентификатору, вы можете использовать символ # в начале строки селектора. Поскольку вы также пытаетесь использовать значение переменной, вы можете объединить "#" и vRow, например:

$("#" + vRow).val(data);

# эквивалентно сопоставлению элемента по идентификатору. Если вы посмотрите на страницу селекторов jQuery (http://api.jquery.com/category/selectors), вы увидите несколько специальных символов, помогающих выбирать элементы. Как я уже сказал, # для ID ..._ 9_ для класса и т. Д. Поэтому вместо того, чтобы jQuery анализировал строку «input [id = value]» и выполнял большую дополнительную обработку, вы можете помочь jQuery сделать это более эффективно. просто используя #.

person Ian    schedule 23.01.2013
comment
@lan я использую этот javascript для события change строки f04 в моей табличной форме. эта строка является строкой autocomplete. когда я выбираю элемент из списка autocomplete, этот javascript не работает. значение не установлено в соответствующем поле. но когда я набираю имя элемента, не выбирая его из списка autocomplete, оно работает. В чем может быть проблема ? - person Bishan; 23.01.2013
comment
Это мой код. Загрузите его здесь - person Bishan; 23.01.2013

Пытаться:

$('input[id="' + vRow + '"]').val(data);
person weekens    schedule 23.01.2013