使用输入值并将其插入表单操作

时间:2017-04-26 00:49:09

标签: javascript php jquery html

我目前正在尝试为我的项目制作页面系统。

我的目标是当有人为输入键入数字并按回车时,页面将刷新并选择该页面。

这是我的代码的一部分:

<?php   
if ($page>1) 
    echo "</b><a class='btn btn-primary' style='background: #384452' href='read_topic.php?id=".$id."&page=".($page-1)."'> < Anterior</a> ";  
     ?> 

我在这里得到了一个不确定的变量nrpng

<form action="read_topic.php?id=<?php echo $id;?>&page=<?php echo $_POST['nrpng'];?>" method="post">
 <input type="number" name="nrpng" style="width:67px; line-height: 2em; text-align:center;" min="1" max="<?php echo $total_pages; ?>" value="<?php echo $page; ?>">
    </form>

其余代码:

<?php if ($page<$total_pages) 
    echo " <a class='btn btn-primary' style='background: #384452' href='read_topic.php?id=".$id."&page=".($page+1)."'>Próxima ></a>"; 
?>

3 个答案:

答案 0 :(得分:1)

Amaro的,

看,你在这里遇到的问题是第一次加载页面或选择“下一个”或“上一个”链接时没有设置$ _POST变量。

所以你需要做的是初始化值以便能够处理这些情况,因为你应该这样做:

<?php
$nrpng = (isset($_POST['nrpng']) ? $_POST['nrpng'] : '');

//further down in your code
<form action="read_topic.php?id=<?php echo $id;?>&page=<?php echo $nrpng;?>" method="post">

但是,我建议您使用“隐藏”字段而不是表单的“操作”来发送这些变量,如果您使用方法“POST”,则通常更优雅。

希望这可以解决您的问题

[EDITED]

看看你在上述问题上所写的内容,我认为你对表格的运作方式存在误解。让我帮忙:

当用户在编写数字后点击输入时,表单中的“输入”将被传递到服务器。因此,您无需编辑表单的操作即可将其传递。例如:

<form action="read_topic.php" method="post">
<input type="number" name="nrpng" style="width:67px; line-height: 2em; text-align:center;" min="1" max="<?php echo $total_pages; ?>" value="<?php echo $page; ?>">
<input type="hidden" name="id" id="id" value="<?php echo $id; ?>
</form>

这应该足以在“read_topic.php”脚本运行时获得所需的信息。

然后在该脚本中,您可以使用以下变量设置$ _POST变量:'id','nrpng',您可以执行为该ID呈现该页面所需的逻辑。

但是,您需要记住初始化这些变量的值以防止第一次加载时出错。

答案 1 :(得分:1)

也许你想要这样的东西:

&#13;
&#13;
//<![CDATA[
// external.js
var doc, bod, htm, post, C, E, T; // for use on other loads
addEventListener('load', function(){ // load start

// I threw in a few goodies to study - it will help you later
doc = document; bod = doc.body; htm = doc.documentElement;
function phpEncode(obj){
  var r = [];
  if(obj instanceof Array){
    for(var i=0,l=obj.length; i<l; i++){
      r.push(phpEncode(obj[i]));
    }
    return '%5B'+r.join(',')+'%5D';
  }
  else if(typeof obj === 'object' && obj){
    for(var i in obj){
      if(obj.hasOwnProperty(i)){
        var v = obj[i], s;
        if(typeof v === 'object' && v){
          s = encodeURIComponent('"'+i.replace('"', '\\"')+'":')+phpEncode(v);
        }
        else{
          v = typeof v === 'string' ? '"'+v.replace('"', '\"')+'"' : v;
          s = encodeURIComponent('"'+i.replace('"', '\\"')+'":'+v);
        }
        r.push(s);
      }
    }
    return '%7B'+r.join(',')+'%7D';
  }
  else{
    r = typeof obj === 'string' ? '"'+obj.replace('"', '\\"')+'"' : obj;
    return ''+r;
  }
}
function phpAccept(url){
  return eval('('+decodeURIComponent(url)+')');
}
post = function(send, where, success, context){
  var x = new XMLHttpRequest;
  var c = context || this;
  x.open('POST', where); x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
  x.onreadystatechange = function(){
    if(x.readyState === 4 && x.status === 200){
      if(success)success.call(c, phpAccept(x.responseText));
    }
  }
  if(typeof send === 'object' && send && !(send instanceof Array)){
    if(send instanceof FormData){
      x.send(send);
    }
    else{
      var r = [];
      for(var p in send){
        r.push(encodeURIComponent(p)+'='+phpEncode(send[p]));
      }
      x.send(r.join('&'));
    }
  }
  else{
    throw new Error('send must be an Object');
  }
  return x;
}
C = function(tag){
  return doc.createElement(tag);
}
E = function(id){
  return doc.getElementById(id);
}
T = function(tag){ // returns an Array of Elements by tag name
  return doc.getElementsByTagName(tag);
}
E('form').addEventListener('submit', function(ev){
  ev.preventDefault();
});
var page = E('page'), err = E('error');
var pr = 'Positive Integer Required';
function gF(){
  var val = page.value;
  if(val.match(/\d+/)){
    location = 'yourPageHere.php?page='+val;
  }
  else{
    err.innerHTML = pr;
  }
}
E('go').addEventListener('click', gF);
page.addEventListener('keydown', function(ev){
  if(ev.keyCode === 13)gF();
});
page.addEventListener('keyup', function(){
  err.innerHTML = page.value.match(/^[1-9]+[0-9]*$/) ? '' : pr;
});

}); // end load
&#13;
/* external.css */
html,body{
  padding:0; margin:0;
}
.main{
  width:980px; margin:0 auto;
}
#contain{
  width:116px; background:#070; color:#fff; padding:10px;
}
#contain>label{
  display:block; float:left; width:40px;
}
#page{
  width:30px; float:left;
}
#go{
  display:block; width:40px; margin:0 auto;
}
#error{
  width:136px; color:#900; text-align:center;
}
&#13;
<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
  <head>
    <meta http-equiv='content-type' content='text/html;charset=utf-8' />
    <link type='text/css' rel='stylesheet' href='external.css' />
    <script type='text/javascript' src='external.js'></script>
  </head>
<body>
  <div class='main'>
    <form id='form'>
      <div id='contain'>
        <label for='page'>Page:</label><input id='page' name='page' type='text' value='1' />
        <input type='button' id='go' value='GO' />
      </div>
    </form>
    <div id='error'></div>
  </div>
</body>
</html>
&#13;
&#13;
&#13;

当然,您应该更改'yourPageHere.php?page='以满足您的需求。

答案 2 :(得分:0)

我终于得出结论,谢谢我帮助我阿图罗(当然还有其他人)

我做的是:

  <form action="read_topic.php?id=<?php echo $id;?>" method="post">  

$nrpng = (isset($_POST['nrpng']) ? $_POST['nrpng'] : '');
if (!empty($nrpng)){ ?>
    <script> window.location = "read_topic.php?id=<?php echo $id;?>&page=<?php echo $nrpng; ?>";</script>

      <?php exit();
    }
?>

每次提交这样的POST时,它都会重定向到该页面并退出。

不要担心我已经解决了负值,最大值和最小值!