2011-06-01 70 views
0

问题:我不知道为什么我的脚本不值装入一个形式的选择输入部分写网址,形成输入值

方案: 页面,称之为主机页面,永久显示一个包含链接的对话框作为内容。如果用户点击链接另一个对话框,将其称为“表单对话框”,并打开一个表单。有些项目通过主机页面的代码平台,浏览器和url插入到表单中。

这是不工作的URL。

该URL在主机页面上获取并存储为.data项目以通过“表单对话”脚本进行恢复。 我在一个更简单的设置上测试了它,但它完美地工作,但它拒绝在当前设置上工作。

症状: 该URL是按预期方式读取和存储的,但该脚本未将其写入表单中。我使用的方法是在首次加载对话框时添加回调函数。回调函数使用.val()函数将数据写入表单,或者至少这是意图。 在对话框设置过程中将值写入窗体,以便用户单击时已将信息加载到窗体中。

我很感激任何关于什么可能是问题的原因和/或如何纠正它的指针或建议。

谢谢。

脚本:

enter <script type="text/javascript"> 
//Triggers a modal containing the feedback form. 
$(document).ready(function() { 
$('#target a').each(function() { 
    var $link = $(this); 
    var $dialog = $('<div></div>') 
     .load($link.attr('href')) 
     .dialog({ 
      autoOpen: false, 
      title: $link.attr('title'), 
      width: 600, 
      height: 500, 
      modal: true, 
      open: function (event,ui) { 
       $("input[name='url']").val($('body').data('value2')); 


      } 
     }); 

    $link.click(function() { 
     $dialog.dialog('open'); 
     $("#accordion").accordion({ 
      collapsible: true, 
      active: false 
     }); 
     return false; 
    }); 
}); 
}); 
</script> 

主页

<html xmlns="http://www.w3.org/1999/xhtml"> 

</head> 

<body> 


<!--Script to get the url of the page and store it as a data item for use on the form --> 
<script type="text/javascript"> 
<?php 
    $url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
    ?> 
var pageAddress="<?php echo $url?>"; 

$('body').data('value2', pageAddress); 

</script> 
<p>The following just confirms that the url is being stored on the page</p> 
<div> 
The URL value stored on the page is 
<span id='urlcheck'></span> 
<p>The location is 
</p> 

<script type="text/javascript"> 
$("span#urlcheck").html("<p>" +$("body").data("value2")+ "</p>"); 
</script> 
</div> 



<!--Check to see if the cookie is set --> 
<?php include ('../_assets/include_files/checkreaderStatus.php');?> 
<!-- The following file is for development only. It adds a navigation menu to pages in which its included. --> 
<?php include('../_assets/include_files/navigation.html');?> 
<!---------------------------------------------------------------------------> 
<!-- Start The Page Display --> 
<h1>Page 1 Of The Blog</h1> 
<p>This page simulates the page on the blog where testers will land.</p> 

<!--Dialog for the "Feedback Form Button --> 
<script type="text/javascript"> 
//Reads the flag readerStatus, if set creates a dialog with a permanently displayed "Feedback Button". NOTE TO SELF: This has to be on the page in order for the php to be to be processed by the server! 
var readerStatus="<?php echo $readerStatus; ?>"; 
if (readerStatus == "tester") { 
    $(function(){ 
     $("#dialog").dialog(); 
       }) 
} 
</script> 

<!-- Content for the Feedback Form Button --> 
<div id="dialog" title="Feedback Button"> 
<div title="Feedback Form"> 
    <p id='target'><a href="feedbackform.php" title='Feedback Form' >Feedback Form</a></p> 
    <p class="notes">This form is dragable and resizable</p> 
</div> 
</div> 




<script type="text/javascript"> 
//Triggers a modal containing the feedback form. 
$(document).ready(function() { 
$('#target a').each(function() { 
    var $link = $(this); 
    var $dialog = $('<div></div>') 
     .load($link.attr('href')) 
     .dialog({ 
      autoOpen: false, 
      title: $link.attr('title'), 
      width: 600, 
      height: 500, 
      modal: true, 
      open: function (event,ui) { 
       $("input[name='url']").val($('body').data('value2')); 


      } 
     }); 

    $link.click(function() { 
     $dialog.dialog('open'); 
     $("#accordion").accordion({ 
      collapsible: true, 
      active: false 
     }); 
     return false; 
    }); 
}); 
}); 
</script> 
</body> 
</html> 

反馈表 反馈表

<link rel="stylesheet" type="text/css" href="../_assets/scripts/black-tie/jquery-ui-1.8.4.custom.css" /> 
</head> 

<body> 



<?php 
$browser = get_browser(null, true); 
?> 
<!-- ajax form next? --> 
<script type="text/javascript"> 
$(document).ready(function() { 
var options = { 
    target : '#output1', 
    url: 'comments.php', 
    clearForm: 'true' 
}; 
// bind 'myForm' and provide a simple callback function 
$('#myform').ajaxForm(options); 
return false; 
}); 
</script> 
<!-- Script to execute text prompts in the fields --> 
<!-- optional name --> 
<script type="text/javascript" id="demoscript"> 
$(document).ready(function(){ 
    //Optionsal Name 
    $("#textTagDemo").fieldtag(); 
    //Textarea 
    $("#area").fieldtag(); 
}); 
</script> 







<div id="accordion"> 
<h3><a href="#">Instructions</a></h3> 
    <div> 
     <p> 
     Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer 
     ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit 
     amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut 
     odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate. 
     </p> 
    </div> 
<h3><a href="#">Broken Links</a></h3> 
<div> 
<form action="comments.php" method="post" name="broken_Links" id="myform" > 
       <fieldset> 
        <p> 
         <input name="name" type="text" size="50" id="textTagDemo" title="OPTIONAL: Add your name" /> 

        </p> 
        <p> 
         <input name="nowhere" type="radio" value="linknowhere" />Link is 
         broken and doesn't go anywhere 
        </p> 
        <p> 
         <input name="wrong_url" type="radio" value="linktowrongurl" />Link 
         goes to an unexpected destination 
        </p> 
        <p> 
         <input name="other" type="radio" value="linkother" />Other - 
         Please explain in the description box below 
        </p> 
        <em>Description</em> 
        <p>Please add as much descripton as you can about the problem you 
         noticed</p> 
        <textarea name="description" id="area" cols="50" rows="10" title="Please add as much description as you can."></textarea> 
        <p> 
         Page Address: <br /> <input name="url" type="text" value="" 
          id="targetURL" size="100" title="Page Address" /> 
        </p> 
        <p> 
         Browser<input name="browser" type="text" 
          value="<?php echo $browser['browser'] ?>" /> 
        </p> 
        <p> 
         Operating System<input name="operating_system" type="text" 
          value="<?php echo $browser['platform'] ?>" /> 
        </p> 
        <p> 
         <input type="submit" name="submit" id="button" value="Submit" /> 
        </p> 
       </fieldset> 
      </form> 
    <!-- server response --> 
      <h2>Output Response</h2> 
      <p id="output1"> 

      </p> 
      <!--End form 4 broken links--> 
</div> 
<h3><a href="#">Errors In The Text</a></h3> 
<div> 
    <p> 
    Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. 
    Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero 
    ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis 
    lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. 
    </p> 
    <ul> 
     <li>List item one</li> 
     <li>List item two</li> 
     <li>List item three</li> 
    </ul> 
</div> 
<h3><a href="#">Confusing Layout</a></h3> 
<div> 
    <p> 
    Cras dictum. Pellentesque habitant morbi tristique senectus et netus 
    et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in 
    faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia 
    mauris vel est. 
    </p> 
    <p> 
    Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. 
    Class aptent taciti sociosqu ad litora torquent per conubia nostra, per 
    inceptos himenaeos. 
    </p> 
</div> 
</div> 
</body> 
</html> 
+0

您能否提供您希望看到的输出示例以及您当前收到的错误输出示例? – 2011-06-01 18:38:02

+0

有可能简化这个问题有点可能,所以用户不需要阅读你的总体应用程序来帮助你?我,对于一个不回答这些'1000班轮'的职位。 – stefgosselin 2011-06-01 18:40:55

+0

@乔治康明斯:感谢您的反馈。我很抱歉,但失败模式是一个空白的领域,我虽然描述了它,但在24小时后阅读它,我看到它不清楚。 – dorich 2011-06-02 18:31:53

回答

1

我想的问题是,你把数据放到身体没有它被包裹的$(document)。就绪()子句中。

为了快速修复,您可以将url定义为一个变量,然后在您的脚本中访问该变量。

例如:

http://jsfiddle.net/LF2rs/1/

PS: 我会建议读成(使用模板)的分隔条件的PHP代码,你的JavaScript(将它们放置在seperately .js文件!)。这将使它更容易和易于发现和防止错误。

+0

感谢您的回复。这解决了问题,但我所做的只是用.val(变量)替换.val(.data)。我有点困惑 - 这个变量是在页面上的一个小脚本中声明的,它使用php来读取URL,然后将结果转换为js变量。我会认为变量的范围意味着它不能用于其他脚本,但也许我不明白“变量范围”。关于你的ps的一个问题:我认为从php到js获取变量的方法是将php嵌入到js中。那是不正确的,是否有另一种方法? – dorich 2011-06-02 15:11:27

+0

关于为什么它没有工作是你在加载jQuery之前使用jQuery。我通常只对内部变量使用内联javascript,但最好在页面外定义的函数或方法中使用,并依赖于json。例如。 on load:startMyPage({... json对象或变量在这里..});你对变量范围也是正确的:我不确定,但我相信文档中定义的东西一般在全局范围内(有一个层次结构)。请参阅:http://stackoverflow.com/questions/500431/javascript-variable-scope – Arend 2011-06-02 15:16:50

+0

@阿伦德。感谢后续非常有帮助。为了强化你对全局变量的评论,W3Schools表示,如果一个变量被定义在一个函数之外,那么它可用于网页上的任何脚本或函数。作为解释的一个例子,我还发现全局变量被附加到窗口对象,参见[this](http://snook.ca/archives/javascript/global_variable)。感谢JSON的提示,我需要去学习,了解它,但我总是想到这个想法。 – dorich 2011-06-02 18:27:23