【问题标题】:Multiline textbox value split using javascript in Asp.Net C#在 Asp.Net C# 中使用 javascript 拆分多行文本框值
【发布时间】:2021-01-31 14:15:46
【问题描述】:

Asp.Net C# 多行文本框(textbox1)值在 35 个地址字符后拆分并添加到文本框(textbox2 - Singleline)再次拆分接下来的 35 个字符并添加到文本框(textbox3 - Singleline)再次拆分接下来的 35 个字符并添加到文本框(文本框 4 - 单行)再次拆分接下来的 35 个字符并添加到文本框(文本框 5 - 单行)。 注意: 虽然在 35 个字符后拆分值,但请确保一个单词不完整,然后在下一行添加该单词,例如(...31 地址 - 这里地址的添加位置是 35 个字符,所以它会滑倒并添加到新文本框中,但我希望新文本框中的单词地址和从它们中计算到 35 个字符,依此类推。)

我试过了,但没用..

function CheckReturns() {

            var txt = document.getElementById("TextBox1");
            var splitResults = txt.value.split("\n");

            if (splitResults[splitResults.length - 1].length < 35) {
                if (splitResults[3].length > 0) {
                    document.getElementById('address4').value = splitResults[3];
                }
                return true;
            }
            else {
                document.getElementById('address1').value = splitResults[0];
                document.getElementById('address2').value = splitResults[1];
                document.getElementById('address3').value = splitResults[2]; 
                txt.value = txt.value + "\n";
            }
        }
<asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine" MaxLength="140" Rows="10" Columns="60"
                onblur="return CheckReturns();" placeholder="Enter Address here.."></asp:TextBox>
            <br />
            Address1:<asp:TextBox ID="address1" runat="server" Width="220px" ></asp:TextBox><br />
            <br />
            Address2:<asp:TextBox ID="address2" runat="server" Width="220px" ></asp:TextBox><br />
            <br />
            Address3:<asp:TextBox ID="address3" runat="server" Width="220px" ></asp:TextBox><br />
            <br />
            Address4:<asp:TextBox ID="address4" runat="server" Width="220px" ></asp:TextBox>
请帮忙。

【问题讨论】:

  • 你想要这个答案用 JS 写吗?
  • 是的,然后将该值分配给文本框。
  • 我个人认为我不会使用 Split。我会得到一个长字符串,从第 35 个字符开始循环并向后工作以找到一个空格,然后在该位置将子字符串放入第一个文本框,然后减少长字符串并再次执行,继续执行 4 次
  • 你可以使用split,如果你在空格上分割,那么只要你没有超过35,就在文本框中重复添加单词。如果当前添加的单词会让你超过35,移动插入到下一个文本框中。如果当前添加的单词长于 35,则必须对其进行子串化

标签: javascript c# asp.net


【解决方案1】:

这是一个实现我在第一条评论中讨论的逻辑的 JS:


let longAddr = "this is a really long address with lots of words longer than 35 characters all over the place and i dont know where it is going to stop it just keeps going so it's like the longest address in the world which is a little bit crazy but there you go";

let addr = ["","","","",""];

for(let i = 0; i < 5 && longAddr.length > 0; i++){

    if(longAddr.length < 35 || i == 4)
    {
        addr[i] = longAddr;
        break;
    }
    
    let cut = 35;
    while(longAddr[cut] !== " " && cut > 0)
        cut--;
    if(cut == 0) //word longer than 35 chars here
      cut = 35;
    
    addr[i] = longAddr.slice(0, cut);
    longAddr = longAddr.slice(cut + 1);
}

console.log(addr);

它会生成一个包含 5 个元素的数组,其中字符串被分割成它们。现在您所要做的就是将值放入您的文本框中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多