2013-10-21 199 views
-1

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

我不能在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> 
+1

看看[ajax](http://api.jquery.com/jQuery.ajax/) –

+0

是的,我没有使用jQuery仍然@Pit挖掘机,但我认为我需要使用jQuery来做到这一点... –

+0

你可以试试这个链接ajax调用使用纯粹的JavaScript http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_callback – Shashank

回答

-2

你还可以添加自定义属性的input元素(jQuery中):

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

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

Fiddle

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); 
     } 
}); 
+0

我的问题不是提交隐藏元素的表单,问题是我需要恢复在java中的一个输入参数,而无需提交表单... 如果我用ajax进行此调用,页面将重新加载?或者我将能够在java上使用“request.getParameter('id')来恢复任何值? –

+0

@LucasSilvadeFreitas,不,如果你使用ajax页面将不会被提交并且不会重新加载。 – th1rdey3

+0

@ th1rdey3,How do我在我的页面调用这个AJAX函数? –

0

一个)可以使用这样的:

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

该件当检测到输入文本变化码。为了更多信息见here如果你想定制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查询:

+0

我需要发送更新服务器中的值,而无需提交表格... –

0

值命名为 “pro_barras”

你确定吗?看看这个:

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

它不是输入的名字,它的ID。您可以尝试使用此:

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

而现在,你可以使用$.ajax将请求发送到一个新的页面,在那里你会从数据库中请求数据。然后你会写出回复,并将其放回第一页。

它会做什么取决于你如何使用它。我会尽量让您只需通过jQuery的API使用serialize()方法,这会让您创建表单中的数据的简单URL PARAM,用它作为:

$.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(); 

没有submiting的页面。

当您点击input type="submit"按钮时,您的页面将不得不提交。为了防止这种情况,你可以使用

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

然后阿贾克斯将继续,另一种方法是删除input type="submit"和使用<button></button>这不会造成任何的提交。

获得与Java代码

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

+0

我知道它的JS ,但它的问题,我需要从JavaScript提取信息到JAVA而无需提交页面... 我需要在用户完成输入“pro_barras”字段时对我的数据库进行搜索,但如果我提交该页面我将失去一个表格创建早..我需要得到的参数拼写的用户没有提交页面,但我需要在JAVA代码上使用它.. 这样子。 var ref = <%= pd.getProdutosBarra(request.getParameter(“pro_barras”))。getPro_referencia()%>; –

+0

您可能已经阅读过'我的答案中没有提交页面标签,它有'return false',您需要停止页面提交。或者尝试用'button'替换'input',以便表单不会重新加载.. –

+0

我刚更新了更多代码的问题...我不想发送请求到新页面,我只想到达我的服务器ONE信息来自ONE输入文本或输入隐藏进行搜索而不会丢失页面上的表格 –