1

我有一个由文本区域组成的表单,感谢 Javascript 的行号。我使用这个表单来验证 JSON,就像 jsonlint.org 那样。用户输入一些 JSON,按下验证,然后得到答案。我自己没有解析文件,我使用 python 命令:

python -m json.tool input.json

如您所见,此命令需要一个文件。所以我正在做的是以下内容:

  • 将表单数据写入文件
  • 运行此命令并获取输出
  • 如果没有错误,则输出到屏幕“有效 JSON”,如 jsonlint.org 否则显示程序给出的错误消息:“错误 .... line x column y (char z)”

Python 程序给出的行号对应于文件中的行号,而不是来自 textarea 的行号...使我的 Javascript 行号无用。顺便说一句,找到 2 的对应关系让我很难,因为它取决于我的文本区域的宽度,以及我在其中使用的字体,以及了解文件中的行号是如何设置的(我不太明白)

我怎么能找到 2 的对应关系?

谢谢

刚刚意识到:我的 textarea 看起来与您在 SOF 上提问时输入的完全相同:D

----- 编辑作为对 Ben 的回应 ----- 非常有趣。我实现了我要求使用名为“wrap”的 textarea 选项的功能。我设置为“软”:

<form method='post' action='/exec' id="jsonform" >
       <textarea wrap="hard" name="json" id="json_input" rows="20" cols="150" placeholder="Enter JSON to validate.">{{ resp | safe }}</textarea>
       <div align="center">
       <input type='submit' value='Validate' id="button" >
       </div>
    </form>

但是,这会使有效的 JSON 无效。因为 Python 模块希望在换行符之前有引号......所以我需要为验证器提供 textarea="soft" 表单中的数据,并显示 textarea="hard" 表单中的数据。但我有一个表格。我还尝试了您给我的帖子中给出的代码,但由于某种原因它不起作用。而且我不知道Javascript(需要改变它。)所以我无法调试或调整代码...... HELLLP

4

1 回答 1

1

与其在事后尝试推导您的线条,不如在发送要测试的数据之前放入标记。 在文本区域中找到“换行符”,它是自动换行的阿拉伯文本看起来它有一种非常强大的技术,可以在所有换行处强制换行。如果 textarea 使用的换行符和文件使用的换行符不同,您应该仍然会发现在传输过程中从一种转换到另一种相对容易。如果您不想干扰它,因为您希望用户能够在没有额外换行符的情况下编辑它,如果/当它返回无效时,那么我建议将 textarea 克隆到“显示:无”内的空间" div 或等效设置。适当地对克隆进行修改和测试,然后将反馈放在未触及的可见原件上。如果文件具有自动换行宽度,那么您必须确保 textarea 的自动换行宽度更短,但这应该不难,如果这是一个问题,我会有点惊讶开始.

编辑:如果python模块必须在断线之前有引号,那么无论如何你都会遇到一些麻烦 - 任何人都可以随时手动输入硬断线,只需按Enter键即可。我的建议是在 Json 和文件之间有某种处理器功能,并在换行符之前放置适当的引号 - 尽管我可能在这里误解了一些事情。

但是,如果您想要使用表单的多个副本,那是完全可行的。您确实需要使用 jQuery,但无论如何 jQuery 都值得学习。(这有点令人沮丧,直到你弄清楚它,然后在你弄清楚它是 javascript 发生过的最好的事情之后,你永远不想没有它。)包括最新的 jQuery 副本(它是一个 javascript 插件)。该clone()功能将让您在克隆时创建现有文本区域(或表单,或任何其他 DOM 对象,实际上)的精确副本(即,它将所有文本写入其中)。和insertBefore()/或insertAfter()函数可以让你把它放在你想要的页面中的任何地方——也许放在 a<div style="display:none"></div>中,这样你就可以随心所欲地随意使用它,而无需在屏幕上做任何可见的事情。

于 2012-06-14T15:57:15.870 回答