将文本插入iframe表单字段&提交

时间:2013-10-05 10:25:28

标签: javascript forms iframe insert submit

好的,我们在配置文件上有一个星级评分系统,它作为iframe嵌入,不安全,因为它暴露数据库表等,但即将到来。现在我们要将评级值插入到1-5中iframe内的表单中的隐藏字段中,并自动提交。我们怎样才能做到这一点?一些在线示例不起作用。

内部iframe:

<form action="submit_rating.php" method="POST">
  <input type="text" name="1" id="rate1" maxlength="1">
  <input type="text" name="2" id="rate2" maxlength="1">
  <input type="text" name="3" id="rate3" maxlength="1">
  <input type="text" name="4" id="rate4" maxlength="1">
  <input type="text" name="5" id="rate5" maxlength="1">
  <input type="submit" value="Rate" style="display:none;" />
</form>

IFRAME:

<iframe src="http://domain.com/submit_rating.php" frameborder="0" scrolling="no" height="10" width="25" name="frame"></iframe>

评级链接:

<a href="howtoinsert?">1</a>
<a href="howtoinsert?">2</a>
<a href="howtoinsert?">3</a>
<a href="howtoinsert?">4</a>
<a href="howtoinsert?">5</a>

谢谢。就像我说的那样,所有其他例子都是垃圾,但没有用。

1 个答案:

答案 0 :(得分:1)

你可以这样做(使用jquery):

评分网站:

<!DOCTYPE html>
<html>
  <head>
    <title></title>
    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
    <script>
      function setRating(rating) {
        var frame = $('iframe')[0].contentWindow.document;
        $(frame).find('#rate'+rating).val('1');
        $(frame).find('form').submit();
      }
    </script>
  </head>
  <body>
    <iframe src="frame.html" frameborder="0" scrolling="no" height="10" width="25" name="frame"></iframe>
    <a href="javascript:setRating(1)">1</a>
    <a href="javascript:setRating(2)">2</a>
    <a href="javascript:setRating(3)">3</a>
    <a href="javascript:setRating(4)">4</a>
    <a href="javascript:setRating(5)">5</a>
  </body>
</html>

框架内容:

<!DOCTYPE html>
<html>
  <head>
    <title></title>
  </head>
  <body>
    <form action="submit_rating.php" method="POST">
      <input type="text" name="1" id="rate1" maxlength="1">
      <input type="text" name="2" id="rate2" maxlength="1">
      <input type="text" name="3" id="rate3" maxlength="1">
      <input type="text" name="4" id="rate4" maxlength="1">
      <input type="text" name="5" id="rate5" maxlength="1">
      <input type="submit" value="Rate" style="display:none;" />
    </form>
  </body>
</html>

但更好的方法是使用ajax:

<!DOCTYPE html>
<html>
  <head>
    <title></title>
    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
    <script>
      function setRating(rating) {
        $.post('submit_rating.php', {
          rating: rating
        });
      }
    </script>
  </head>
  <body>
    <a href="javascript:setRating(1)">1</a>
    <a href="javascript:setRating(2)">2</a>
    <a href="javascript:setRating(3)">3</a>
    <a href="javascript:setRating(4)">4</a>
    <a href="javascript:setRating(5)">5</a>
  </body>
</html>