以编程方式将按钮移动到另一个tr

时间:2017-04-19 19:34:02

标签: c# html css asp.net

我在ASP.NET应用程序中使用mdx设计了一个登录表单。

enter image description here

客户要求通过移动几个UI控件来修改布局。他们想要在“登录”按钮下方移动“忘记密码”链接,使它们位于不同的行上。

enter image description here

但是,对于所有其他客户端,一切都需要保持不变,因此如果需要进行任何CSS或样式更改,我需要以编程方式进行。有没有简单的方法可以做到这一点?

我试图避免创建重复的用户控件以适应他们想要的布局,然后隐藏/显示控件,具体取决于客户端。

<table>

JSfiddle Demo

编辑:jQuery不允许。 JavaScript OK。

3 个答案:

答案 0 :(得分:1)

您可以使用jQuery对其进行归档。

以下是将按钮向后移动一步的示例

&#13;
&#13;
$(document).ready(function() {
    var loginLayOut = $(".login");    // login Table
    var btnTd = loginLayOut.find("button").parent(); // button container, in this case its td
    var tbody = btnTd.parent().parent();    // we get the tbody by moving two step back
    var tr = $("<tr></tr>");     // create a new tr
    tr.append(btnTd);            // append the td to the new created tr
    tbody.prepend(tr);           // insert the tr to the tbody at position 0
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class='login' style="TABLE-LAYOUT: fixed; WIDTH: 370px;">
  <COLGROUP>
    <COL width="120px">
    <COL width="250px">
  </COLGROUP>
  <tr>
    <td>Username:</td>
    <td><input type="text" name="username"></td>
  </tr>
  <tr>
    <td>Password:</td>
    <td><input type="text" name="password"></td>
  </tr>

  <tr>
    <td>&nbsp;</td>
    <td>
      <table>
        <tr>
          <td style="text-align:right;">
            <a href="url">Forgot Password</a>
          </td>
          <td>
            <button type="submit">Login</button>
          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

Jquery可以为您做到这一点。代码可能看起来像这样:

&#13;
&#13;
$("#toggle").click(toggleButtonPosition);

function toggleButtonPosition() {
  var buttonRow = $("button[type=submit]").closest("tr"), buttonCell, newTR, tr;

  if (buttonRow.find("td").length === 2) {
    // the table is in its initial configuration.  Need to extract the button cell and add it to a new row
    buttonCell = buttonRow.find("button").closest("td");
    buttonCell.remove();

    newTR = $("<tr />").append(buttonCell);

    newTR.insertBefore(buttonRow);
  } else {
    // Reverse the process
    buttonCell = buttonRow.find("td");

    tr = buttonRow.siblings().first();

    tr.append(buttonCell);

    buttonRow.remove();
  }
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table style="TABLE-LAYOUT: fixed; WIDTH: 370px;">
  <COLGROUP>
    <COL width="120px">
    <COL width="250px">
  </COLGROUP>
  <tr>
    <td>Username:</td>
    <td><input type="text" name="username"></td>
  </tr>
  <tr>
    <td>Password:</td>
    <td><input type="text" name="password"></td>
  </tr>

  <tr>
    <td>&nbsp;</td>
    <td>
      <table>
        <tr>
          <td style="text-align:right;">
            <a href="url">Forgot Password</a>
          </td>
          <td>
            <button type="submit">Login</button>
          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>

<a href="javascript:void(0);" id="toggle">Toggle Button Position</a>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

您无需复制布局。您可以通过使用jquery或javascript根据客户端添加/删除css类来实现。

$(document).ready(function(){
 var client1 = true; // variable to store client
 if(client1){
  $('button').removeClass('client2').addClass('client1');
 } 
else {
 $('button').removeClass('client1').addClass('client2');
 }});

要根据客户端添加/删除按钮的Css类。我在按钮上放了'client1'css类。

button.client1{display:block;margin:0 auto}
button.client2{float:right;margin-left:4px}

Html代码如下:

<table style="TABLE-LAYOUT: fixed; WIDTH: 370px;">
 <COLGROUP>
  <COL width="120px">
  <COL width="250px">
 </COLGROUP>
 <tr>
  <td>Username:</td>
  <td><input type="text" name="username"></td>
 </tr>
 <tr>
  <td>Password:</td>
  <td><input type="text" name="password"></td>
 </tr>
 <tr>
  <td>&nbsp;</td>
  <td>
   <table>
    <tr>
      <td>
        <button type="submit" class='client1'>Login</button>
         <a href="url">Forgot Password</a>            
      </td>         
    </tr>
   </table>
  </td>
</tr>