-1

我有一个javascript var,它返回输入文本ID“ven_prod”的值,值为“ven_prod”我需要在我的数据库中进行搜索而不提交页面。

我不能在 java 代码中使用 javascript var,所以我在隐藏的输入文本 ID“prod_hidden”中设置了值,但我需要提交它以使用 java 代码获取值并进行搜索.. 。我该怎么做 ?

<input id="ven_prod" type="text" placeHolder="Código de Barras" autofocus>
        <input id="prod_hidden" type="text" value="">

        <script>    
            $('#ven_prod').keypress(function (e)
                    {
                        if(e.keyCode==13)
                        {
                            var table = document.getElementById('tbprodutos');
                             var tblBody = table.tBodies[0];  
                             var newRow = tblBody.insertRow(-1);
                             var prod = document.getElementById('ven_prod').value;
                             var qtd = document.getElementById('ven_qtd');
                             var barra = prod.substring(0, 12);
                             var num = prod.substring(14, 16);
                             document.getElementById('prod_hidden').value = barra;
                             var ref = <%=pd.getProdutosBarra(request.getParameter("prod_hidden")).getPro_referencia()%>;
OR
                             var ref = <%=pd.getProdutosBarra(JS VAR 'barras HERE).getPro_referencia()%>;

                             if(prod.length==16) { 
                               var newCell0 = newRow.insertCell(0);  
                               newCell0.innerHTML = '<td>'+ref+'</td>';

                               var newCell1 = newRow.insertCell(1);  
                               newCell1.innerHTML = '<td>'+num+'</td>';  

                               var newCell2 = newRow.insertCell(2);  
                               newCell2.innerHTML = '<td>'+qtd.value+'</td>';

                               var newCell3 = newRow.insertCell(3);  
                               newCell3.innerHTML = '<td>R$ '+valor+'</td>';

                               var newCell4 = newRow.insertCell(4);  
                               newCell4.innerHTML = '<td>'+barra+'</td>';

                                document.getElementById('ref').value = '6755';
                                document.getElementById('imgsrc').src = './?acao=Img&pro_id=1';
                                document.getElementById('valortotal').value = 'Testando novo valor';
                                document.getElementById('ven_prod').value = '';
                                document.getElementById('ven_qtd').value = '1';

                            } else {

                                document.getElementById('ven_prod').value = '';
                                document.getElementById('ven_qtd').value = '1';
                                alert("Código de barras inválido!");
                            }

                            return false;
                        }
            });
        </script>
4

4 回答 4

1

您可以使用 jQuery 进行 ajax 调用,如下所示。将提交您的表单数据以及隐藏元素。

var form = jQuery("#YourFormID");
jQuery.ajax({
        type: "POST",
        url: form.attr("action"), 
        data: form.serialize(), // serializes the form's elements.
        success: function(data) {
            console.log(data);
        }
});
于 2013-10-21T04:05:29.453 回答
0

名为“pro_barras”的输入文本的值

你确定吗?看这个:

<input type="hidden" id="pro_barras">

它不是输入的名称,而是 ID。你可以尝试使用这个:

<input type="hidden" name="pro_barras">

现在,您可以使用$.ajax将请求发送到一个新页面,您将从该页面请求数据库中的数据。然后你会写下回复,并在第一页取回。

它会做什么取决于你如何使用它。我将尝试要求您简单地使用serialize()jQuery API 方法,这将让您使用表单中的数据创建一个简单的 URL 参数,将其用作:

$.ajax({
  var data = $('#formid').serialize(); // serialize the form..
  url: "link/to/file.cshtml",
  data: data,
  success: function (datares) {
    $('#resultid').html(datares); // write the result in the element
  }
})

如果您只想从该字段中获取值,您可以使用

var data = $('input[name=pro_barras]').val();

不提交页面。

input type="submit"当您单击按钮时,您的页面必须提交。为了防止你可以使用

$('#idofsubmitbutton').click(function () {
  return false; // stop execution and stay on page..
}

然后ajax将继续,其他方法是删除input type="submit"并使用<button></button>不会导致任何提交。

使用 java 代码获取值

这不是java:) 它的 JavaScript,它们完全不同。:)

于 2013-10-21T04:58:21.977 回答
0

a)你可以这样使用:

$("#pro_barras").bind("change paste keyup", function() {
   //$('.someClass').submit();    
   $('#it_is_form_id').submit();   // it call form's submit function
}); 

输入文本更改时检测到的代码段。如需更多信息,请参见此处如果您想自定义form submit功能

$('#it_is_form_id').bind("submit", function(){
  //alert("submit");
  // make here simple ajax query
  return false; //<-- it is used so that default submit function doesn't work after above code. 
});

别忘了,所有代码都在里面

<script>
  $(function() {
   // your code must be here
  });
</script>

b)如果你不想使用form,你可以这样做:

<script>
    $(function() {
        $("#pro_barras").bind("change paste keyup", function() {     
            var text = $("#pro_barras").val();
            $.ajax({
                type: "POST",
                url: "yourUrl",
                data: text,
                success: function(res){
                    console.log(res);
                },
                error: function(err){
                    console.log(err); 
                }
            });
        });

    });
</script>

制作简单的ajax查询:

于 2013-10-21T04:43:23.897 回答
-2

您还可以将自定义属性添加到您的输入元素(在 Jquery 中):

<input type='text' id='pro_barras' customattr='myCustomInfo'/>

<script>
 var customValue = $('#pro_barras').attr('mycustomvar');
alert(customValue);
</script>

小提琴

于 2013-10-21T04:04:53.260 回答