如何防止删除闭合的</option>标签?

3
我希望您能够像这样做到:

我希望达到这个目标


<select id="funsports" name="funsports">
   <option value="">sports</option>
   <option value="football">football</option>
   <option value="tennis">tennis</option>
</select>

但是当我保存小部件时,它会强制删除末尾的闭合标签。当我在博客园小部件中使用这种选项时,我会遇到这样的问题。
我们如何强制使用</option>标签来结束?是否有用jQuery或JavaScript实现的方法,或者我们只能通过HTML和CSS来实现。
<select id="fungames" name="fungames">
  <option value="" />games
  <option value="roadrash" />roadrash
  <option value="gta" />gta
</select>

1
你为什么觉得这是个问题?这是有效的HTML(如下所示Rahul's answer)。 - David Thomas
David Thomas,我不知道是根据我的博客模板还是什么,但当我再次保存它时,如果我打开编辑器,它就不会显示。我想关闭我的项目中的</option>,因为一些值没有被接受,就像我上面说的那样。是否有其他可靠的方法来解决这些问题? - overflowstack9
1
在你的问题中,你展示了一个值丢失的情况,但是你在问题中没有说明这是你想要解决的问题。但这几乎是无关紧要的,因为如果没有value,当提交父级<form>时,<option>的文本将被用作值;所以如果可能的话,您可能更容易从<option>元素中删除value属性。虽然我不明白为什么这个小部件会“强制性地[删除]结束标记”。 - David Thomas
@DavidThomas 首先,我想知道关闭<option>标签的不同方法,因为我将在我的网站设计中告诉原因</option>一旦输入,它在重新打开编辑器时不会显示。这会对整个代码造成损坏。 - overflowstack9
这可能与Blogger似乎使用XHTML有关。用户提供的HTML必须进行后处理,以确保服务器提供有效的XML。 - Álvaro González
我们必须知道在select元素关闭option标签和看起来没有关闭之间发生了什么。答案直接与您未在此处提及的特定代码相关。当然,这不会自动发生。 - vsync
2个回答

3

W3.org说:

标签省略

选项元素必须有起始标签。如果选项元素紧接着另一个选项元素,或者紧接着一个optgroup元素,或者父元素中没有更多内容,则可以省略选项元素的结束标签。


但是,当我使用</option>标签保存并在HTML中重新打开小部件时,它不会显示关闭标签。我该怎么做? - overflowstack9
1
问题并不是在问HTML是否有效,而是在问如何保留闭合标签。 - Michael Benjamin
1
@Michael:但是这个答案暗示了 - 虽然没有明确说明 - 结束标签是可选的,不是必需的,如果没有它,也不需要解决问题。 - David Thomas
1
是的,@Michael_B说得对,我想知道关闭选项标签的不同方法,就这样。 - overflowstack9

2

正如其他人所说,这并不是一个实际的问题,但如果你真的想要那个最后的标签,只需使用jQuery:https://jsfiddle.net/tu3wpzsj/3/

$(document).ready(function() {
    $('select').append('</option>');
    $('option').each(function(i){
        if(i!=0) $(this).before('</option>');
    });
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接